前提
先日こちらの質問でお世話になったものです。
先日の質問と関連するところで、本日新たに分からない問題が発生したため、皆様のお力添えをいただきたく質問を投稿させていただきます。
実現したいこと
① 「マクロテスト_削除対象一覧表」ファイルの「削除対象一覧」シートの「略称」を上から順番に見る
② 「削除対象一覧」シートの「略称」が、「マクロテスト」ファイル「データ一覧」シートの「略称」と一致する場合
(i)それに対応するシートを削除する。
(ii)それに対応する行を「データ一覧」から削除する
といった処理を行いたいため、以下のようなマクロを作成しました。
lang
1Sub ファイル間_削除_01() 2 ' 変数の準備 3 Dim 削除対象取得 As Range 4 Dim 略称 As Range 5 6 ' DB設計書を開く 7 ChDir "C:\***" 8 Workbooks.Open Filename:="C:\***\マクロテスト.xlsm" 9 10 ' 削除確認を非表示にする 11 Application.DisplayAlerts = False 12 13 ' 削除対象一覧を上から順番に見て処理 14 For Each 削除対象取得 In ThisWorkbook.Worksheets("削除対象一覧").Range("A6", ThisWorkbook.Worksheets("削除対象一覧").Cells(Rows.Count, 1).End(xlUp)) 15 For Each 略称 In Workbooks("マクロテスト.xlsm").Worksheets("データ一覧").Range("B4", Workbooks("マクロテスト.xlsm").Worksheets("データ一覧").Cells(Rows.Count, 2).End(xlUp)) 16 ' 削除対象が「データ一覧」の略称に一致する場合 17 If 削除対象取得.Value = 略称.Value Then 18 19 ' 削除対象のシートを削除 20 略称.Hyperlinks(1).Follow 21 ActiveSheet.Delete 22 DoEvents 23 24 ' 削除対象と一致する略称を持つ行を「データ一覧」から削除 25 略称.EntireRow.Delete 26 DoEvents 27 28 'ループを抜ける 29 Exit For '略称 30 End If 31 Next 略称 32 Next 削除対象取得 33 34 ' 削除確認を表示にする 35 Application.DisplayAlerts = True 36End Sub
これによりやりたいことはできると思ったのですが、いざこのマクロを実行すると、**「実行時エラー'424:'オブジェクトが必要です」というエラーが[略称.EntireRow.Delete]**のところで起きてしまっています。
途中までは実行されるのですが、ある値の箇所で突然このエラーが出ます。
原因が分からなかったため、デバックで実行してみると何の問題も発生することなく処理を終えることができました。削除しているところで何か良からぬことが起こっているようなので、[DoEvents]関数を利用してみましたが、それでも同じエラーが起きてしまいました。
これは何が原因だと考えられますでしょうか?
よろしくお願いいたします。
参考図
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/08 01:54
2016/08/08 02:18
2016/08/08 04:38 編集
2016/08/10 00:46 編集