VBA行削除時のエラー1004について
VBA行削除時のエラー1004について ブック間でコピー&ペーストをしようとしています。 コピー元のブックにはタイトル行が含まれており、コピー先には不要ですので行削除してからコピペ実行しようとしています。 また、コピー元はテーブル設定がされている場合とされていない場合があり、 テーブル設定されている時は範囲に変換してから行削除を実行しようとしています。 しかし、下記マクロ(行削除付近抜粋)を実行すると 「実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです」となります。 --------- Targetbook.Activate Sheets("Sheet1").Unprotect If ActiveSheet.FilterMode = True Then ActiveSheet.ListObjects(1).Unlist End If If Range("A1") = "区分" Then Range("A1").EntireRow.Delete ←エラーが出る行 End If --------- エラーは←の行で発生します。 A1に「区分」という単語が入っていればタイトル行が存在するということなので 削除をしようとしています。 (タイトル行があったりなかったりするので) 行削除が実行できない原因の可能性として、シートの保護が掛けられているのかと思いUnprotectを入れましたが変わらないです。 また、同じコードを別のブックで実行してもエラーは出ないです。 ブックの破損かと思い、新規ブックに内容をコピペして実行しましたが同じエラーが出ます。 行削除のエラーについて、原因と解決策を教えてくださいますでしょうか。 開示が不足しておりましたらすみません。
Visual Basic | Excel・30閲覧・50
ベストアンサー
どちらのブックのどのシートのA1なのかをきちんと書けば解決するような気がします。 If Targetbook.Sheets("Sheet1").Range("A1") = "区分" Then Targetbook.Sheets("Sheet1").Range("A1").EntireRow.Delete End If
できました! ありがとうございました。 同じ構造の他のブックではRangeから書き始めて通っていたのが腑に落ちませんが……またブック指定、シート指定がどんな時に必要でどんな場合は省略していいか判断がつきませんので、勉強していきたいと思います。
質問者からのお礼コメント
お二方とも大変有益な情報を書いていただき、どちらもすぐに組み込めるコード例で本当に助かりました。 迷いましたが、早かったのと、返信後フォローをいただきましたfro********さんをベストアンサーにさせていただきました。
お礼日時:1/27 11:49