こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAのコードがエラーになってしまいます。(エクセル)

ある表のある項目が空白以外(つまり、在庫がある)のものを
オートフィルターで抽出して、その中の該当列のみコピーするマクロを
記録と修正をして書きました。
初めはきちんと動いていたのですが、今日になって急に
「Selection.Copy」のところでエラーが出てしまうようになったんです。
エラーコメント:
実行時エラー‘1004':
そのコマンドは複数の選択範囲に対して実行できません。
・・・・と出たときに、デバッグすると、「Selection.Copy」の
1行が黄色くなっていて、該当箇所になっています。
コード:
Selection.AutoFilter Field:=19, Criteria1:="<>" '検索
Range("A8:C1000,G8:I1000,J8:L1000").Select
Selection.Copy
作業自体は、複数の選択範囲に対して実行できる(コピーできる)し、
今まで動いていたのに??と、なにがいけないのかわからないので、
どうか教えていただきたいと思います。
VBAは勉強始めたばかりで、この部分だけが問題なのか
わかりません。補足をしますので、どうかよろしくお願いします。
Excel2000を使用しています。

投稿日時 - 2002-10-16 15:09:10

QNo.382154

困ってます

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

文法的には問題ないと思います。

ですが、
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文が残った状態で
再度処理をされているのではないでしょうか?

投稿日時 - 2002-10-16 15:59:28

お礼

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

投稿日時 - 2002-10-16 16:47:00

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問