
ある表のある項目が空白以外(つまり、在庫がある)のものを
オートフィルターで抽出して、その中の該当列のみコピーするマクロを
記録と修正をして書きました。
初めはきちんと動いていたのですが、今日になって急に
「Selection.Copy」のところでエラーが出てしまうようになったんです。
エラーコメント:
実行時エラー‘1004':
そのコマンドは複数の選択範囲に対して実行できません。
・・・・と出たときに、デバッグすると、「Selection.Copy」の
1行が黄色くなっていて、該当箇所になっています。
コード:
Selection.AutoFilter Field:=19, Criteria1:="<>" '検索
Range("A8:C1000,G8:I1000,J8:L1000").Select
Selection.Copy
作業自体は、複数の選択範囲に対して実行できる(コピーできる)し、
今まで動いていたのに??と、なにがいけないのかわからないので、
どうか教えていただきたいと思います。
VBAは勉強始めたばかりで、この部分だけが問題なのか
わかりません。補足をしますので、どうかよろしくお願いします。
Excel2000を使用しています。
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文が残った状態で
再度処理をされているのではないでしょうか?
直りました~~!!ありがとうございます。
マクロ記録したものをつなぎ合わせただけのようなコードだったので、
不要なコードを消したり、移動させたりしていたのですが、
HELL_METさんの助言を聞いて、全体を見直したところ、
そのときの残骸が2行、ずっと手前のところに残ってたのを見落としていました。
原因の2行:
Selection.AutoFilter Field:=19
Range("A1").Select
というのが、何も関係ないところに残っていました。
"複数の選択範囲”というのが、
A8:C1000,G8:I1000,J8:L1000
のことを指しているのだと思いこんでいたので、
そのあたりしか見直していませんでした。
>Select文が残った状態で
>再度処理をされているのではないでしょうか?
という助言で解決しました。
本当にありがとうございました。
間抜けなミスでした・・・
がんばって勉強しますのでまたよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
vba オートフィルターのエラーについて
その他(Microsoft Office)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
5
オートフィルタで未入力(空白)を無視した抽出法
PowerPoint(パワーポイント)
-
6
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
7
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
8
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
9
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
10
EXCELのVBA-フィルタ抽出後のセル選択方法
Visual Basic(VBA)
-
11
VBAで重複するデータがあれば1個だけ残して他の重複セルを"(空白)にしたいのですが
Excel(エクセル)
-
12
Excel オートフィルタのリストを取得したい
Excel(エクセル)
-
13
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
14
Application.Matchで特定行の検索
Visual Basic(VBA)
-
15
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
16
Excel2016 まとめてのコピペができない時があります
Excel(エクセル)
-
17
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
18
vbaで指定したセルより下の行を指定する方法について vbaの質問です。 例えば、「C6」セルより下
Excel(エクセル)
-
19
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
20
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
ExcelVBA Range クラスの Page...
-
マクロについて教えてください...
-
【マクロ】エラー【#DIV/0!】が...
-
クラシックASPでのエラー処理に...
-
実行時エラー48発生時のDLL特定...
-
Invalid procedure call or arg...
-
なぜエラーになるのでしょうか...
-
なぜこんな初歩的なVBAのIf文で...
-
VBS実行時エラー オブジェクト...
-
トランスポートレベルのエラー
-
EXCEL/VBAで、自分のPCだけエラ...
-
VBAのコードがエラーになっ...
-
VBAでのエラー
-
AccessVBAでExcelを起動し、罫...
-
エクセルエラー13型が一致しま...
-
VBS シートをコピーして別のブ...
-
エクセルVBAで以下のようなコー...
-
Excel VBA comboboxへの割り当て
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
【マクロ】エラー【#DIV/0!】が...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
実行時エラー -'-2147417848
-
実行時エラー48発生時のDLL特定...
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー3001「引数が間違...
-
EXCEL/VBAで、自分のPCだけエラ...
-
VB6+SQL サーバー 2000 で 実行...
-
VBAのエラー発生場所をメッセー...
-
ADODB.Streamを使用してUTF-8を...
-
【Excel VBA】マクロをボタンに...
-
OLEDB.NETで接続できない
-
なぜエラーになるのでしょうか...
-
INSERT INTOステートメント構文...
-
Outlook.ApplicationをCreateOb...
おすすめ情報