• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのコードがエラーになってしまいます。(エクセル))

VBAコードでエラーが出る問題の解決方法とは?

このQ&Aのポイント
  • VBAのコードがエラーになってしまいます。エクセル2000を使用しています。
  • ある表のある項目が空白以外のものをオートフィルターで抽出し、その中の該当列のみコピーするマクロを作成しました。
  • 初めは正常に動作していたのですが、突然「Selection.Copy」の箇所でエラーが発生するようになりました。エラーメッセージは「実行時エラー‘1004': そのコマンドは複数の選択範囲に対して実行できません。」です。問題箇所をデバッグすると、「Selection.Copy」の行が黄色く表示されています。要約すると、VBAのコードでエラーメッセージが表示され、コピーができなくなった問題が発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • HELL_MET
  • ベストアンサー率47% (16/34)
回答No.1

文法的には問題ないと思います。 ですが、 Rangeでセルを取得した状態でSelection.AutoFilterをかけると1004の実行エラー が出ます。 現象確認の仕方 1.隣り合わない複数のセルを選択してみる。  (CTRLキーを押したままでマウスでクリックすれば出来ます) 2.データ→フィルタ→オートフィルタを選択する 3.「複数の選択範囲に対してそのコマンドは実行できません」  とエラーが出る。 つまり Range("A8:C1000,G8:I1000,J8:L1000").Select を実行後に Selection.AutoFilter Field:=19, Criteria1:="<>" '検索 をかけるとエラーになるということになります。 ですから、 Selection.AutoFilter 関数の前に Range("A1").Selectなどを記述してあげるか、 Selection.Copy の後にSELECTを無効にするような関数を 組み込めばいいのではないでしょうか。 発生原因までは解りませんが、Select文が残った状態で 再度処理をされているのではないでしょうか?

fruit-gogo
質問者

お礼

直りました~~!!ありがとうございます。 マクロ記録したものをつなぎ合わせただけのようなコードだったので、 不要なコードを消したり、移動させたりしていたのですが、 HELL_METさんの助言を聞いて、全体を見直したところ、 そのときの残骸が2行、ずっと手前のところに残ってたのを見落としていました。 原因の2行:   Selection.AutoFilter Field:=19   Range("A1").Select というのが、何も関係ないところに残っていました。 "複数の選択範囲”というのが、 A8:C1000,G8:I1000,J8:L1000 のことを指しているのだと思いこんでいたので、 そのあたりしか見直していませんでした。 >Select文が残った状態で >再度処理をされているのではないでしょうか? という助言で解決しました。 本当にありがとうございました。 間抜けなミスでした・・・ がんばって勉強しますのでまたよろしくお願いします。

関連するQ&A