• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:修正候補:エラー)

エクセルVBAのマクロでエラーが発生する理由について教えてください

このQ&Aのポイント
  • エクセルVBAのマクロで、指定した条件に基づいてデータをフィルタリングする方法を学習しています。
  • テキスト通りにコードを入力したところ、赤色のエラーメッセージが表示され、マクロが正常に動作しない問題が発生しました。
  • 指定した条件の記述方法に誤りがある可能性や、他の要素に問題がある可能性があります。助言いただけると幸いです。

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

「Auto Filter」となっていますが、「Auto」と「Filter」の間にスペースはいりません。 「Filter」の直後は半角スペースが必要であり、「_」の次の行に「Field」以降を記述します。 あと、「End With」がありません。修正すると以下です。 With Worksheets("Sheet1") .Range("A1").AutoFilter _ Field:=7, Criteria1:=">=300" End With そんなに長くないので、以下の様に続けて書いてもいいです。 With Worksheets("Sheet1") .Range("A1").AutoFilter Field:=7, Criteria1:=">=300" End With

BigHolmesteria
質問者

お礼

ご丁寧に、ありがとうございました。 本当に助かりました。 感謝いたします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

これ、打ち込んだ通りですか? > .Range("A1").Auto Filter_ > > Field:=7, Criteria1:=">=300" とありますが 文末の _ は、継続行といって、長い文を分割するのに使います。 しかし、次が空行なので意味がありません。 本当は .Range("A1").Auto Filter_ Field:=7, Criteria1:=">=300" で、_で繋って .Range("A1").Auto Filter Field:=7, Criteria1:=">=300" の意味ではないでしょうか? 勉強するなら、ただ入力するのではなく、その中身を考えるようにしましょう。

BigHolmesteria
質問者

お礼

ありがとうございました。 申し訳ありませんでした。意味を考えながら勉強します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAでオートフィルタを使った抽出がうまくいきませんのでどなたか教えて

    VBAでオートフィルタを使った抽出がうまくいきませんのでどなたか教えてください。 A列、C列に日付が入っていて、A列は空白以外のセルを表示し、かつC列は、開始日、終了日で抽出したいのですが、うまくいきません。 With Worksheets("sheet").Activate 開始日 = ">=" & TextBox1.Text 終了日 = "<=" & TextBox2.Text .Range("A1:N200").AutoFilter Field:=1, Criteria1:="<>" .Range("A1:N200").AutoFilter Field:=3, _ Criteria1:=開始日, Operator:=xlAnd, _ Criteria2:=終了日

  • オートフィルタ抽出データをコピーするマクロについて

    マクロについて勉強中の者です。 "Sheet1"にあるデータをオートフィルタで抽出し、 "Sheet2"に抽出データのみをコピーをしたいと思っています。 Range("A10:G59").Select Selection.ClearContents With Worksheets("Sheet1").Range("A1") .AutoFilter .AutoFilter Field:=1, Criteria1:="○" .CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A9") End With End Sub としてみたのですが、 これを実行すると、オートフィルタが1行目(A1)ではなく、 2行目で設定されてしまい、抽出データがずれてしまいます。    A    B    C 1 品 名  仕入先  発注数 ←タイトル行に設定したい 2 りんご  ヤマト   10  ← この行に▼が設定される 色々調べた結果のマクロなので、どこが悪いのか見当がつきません。 解りやすく教えていただける方がおられましたら、よろしくお願い致します m(__)m

  • excelで複数条件で抽出する

    excel VBAで質問です。(初心者レベルです) A列からZ列までデータがあり、オートフィルタでE列で条件に当てはまるものと、E列では条件外だが、Y列では条件に当てはまるものを別シートに抽出したいと思っています。 Sub Macro1()   With Worksheets("Sheet1")     .Range("A1").AutoFilter _       Field:=5, Criteria1:="*条件*"     .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _       Worksheets("Sheet2").Range("A1")   End With End Sub Fieldを変えて、E列、Y列それぞれはできるのですが、データが重複してしまいます。 重複分を削除するため、セル入力で連番を降って、重複するものを削除しようとしましたがうまくいかず。 なにかいい方法はないでしょうか。

  • excelVBAで年をインプットボックスにする

    オートフィルタで月ごとのシートにデータを振り分けるVBAを書いたのですが、毎年使えるようにしたいと思います。 現在のものが↓です。(4月分のみ。あとは繰り返し) Sub month()   With Worksheets("Sheet1")     .Range("A1").AutoFilter _       Field:=7, _       Criteria1:=">=2010/04/01", Operator:=xlAnd, _       Criteria2:="<2010/05/01"     .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _       Worksheets("Sheet2").Range("A1")   End With   Worksheets("Sheet2").Activate   Columns("A:AK").EntireColumn.AutoFit End Sub これをインプットボックスを使って、2011と入れると、2011年度の月ごとに抽出するようなVBAはどのように組めばいいのでしょう。 年度なので、1月~3月の設定とうるう年になったときに文字動的に日にちが変わるようにするにはどうするのかよくわかりません。 よろしくお願いします。

  • オートフィルタをマクロで作成したときに列番号ではなく文字で判別させたい

    こんにちわ、質問させていただきます。 マクロでオートフィルタを使いたいのですが、 Worksheets("Sheet1").Range("A1").AutoFilter _ field:=1, _ Criteria1:="東京" VisibleDropDown:=False このfield:=1という列番号指定を文字列で検索したいと思っています。 例えばどこかの行に「地域」という列があった場合”地域”の列にフィルタをかけて東京を検索したいといった場合です。 ↓ 地域  市外局番  郵便番号 東京   03     100 このフィールドを文字列指定することは不可能なのでしょうか?

  • オートフィルターの使い方

    マクロでオートフィルタを使おうと思っているのです。 作成したリストの中で、日付でフィルタしようと思い 下記を作成してみましたがうまくいきません。 Worksheets("シート名").Range("A2").AutoFilter Field:=30, Criteria1:="<=2004/9/30", Operator:=xlAnd = 1, Criterial2:=">=2004/9/1" 条件と致しましては任意の期間(例:2004/9/1~2004/9/30)を抽出条件としたいのですが・・・ 又、セルには空白も存在します。 宜しくお願いいたします。

  • VBAの日付範囲の抽出について

    作業SheetのC列から日付で範囲指定して検索された行を検索workへ行をコピーしたいのですが、 日付の抽出がうまくできません。どなたかご教授願います。 また、できることなら、オートフィルタを利用せずに抽出したいのですが、書き方がわかりません。 素人の質問で申し訳ございませんが、よろしくお願いします。   開始年月日 = ">=" & S受付日Box.Text 終了年月日 = "<=" & E受付日Box.Text Worksheets("作業Sheet").Range("C1").AutoFilter _ Field:=3, _ Criteria1:=開始年月日, _ Operator:=xlAnd, Criteria2:=終了年月日 Worksheets("作業Sheet").Range("A2").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("検索work").Range("A2") Worksheets("検索work").Range("2:2").Delete 'タイトル行の削除 MsgBox "抽出が完了しました。「検索結果の表示」ボタンから確認してください"

  • VBA関数

    PC ほぼ素人です。ネットで調べて、下記のコードを作成できました。 バージョンは2007 Sub 抽出() Worksheets("Sheet5").Activate Worksheets("Sheet5").Range(Cells(1, 1), Cells(328, 18)).Clear With Worksheets("Sheet3").Range("A8") .AutoFilter Field:=1, Criteria1:=Worksheets("Sheet3").Range("a2") ''(1) .AutoFilter Field:=2, Criteria1:=Worksheets("Sheet3").Range("b2") ''(1) .CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("Sheet5").Range("A1") ''(2) .AutoFilter ''(3) End With Worksheets("Sheet5").Activate End Sub Sheet5に抽出後、そのデータを書き換え Sheet3へ戻したいのですが可能なのでしょうか?      A  B      C     D      E      F      G   1  月  日   得意先   前回    数量    今回    数量   2  3   5    A商事   1月15日   2     2月5日   3   抽出後、Sheet3には、ABDEFGを戻したいのです。 説明不足かもしれませんが、どうか宜しくお願い致します。   

  • Excel2010テーブル内の見出しの列番取得

    VBAでテーブル内のオートフィルターを処理するにあたり、 "AAA"という見出しの列でフィルターをかけたいのですが、 下記の構文等ではエラーが出てうまくいきませんでした。 Worksheets("sheet1").ListObjects("xxx").Range.AutoFilter Field:="AAA", Criteria1:="<>" なので、"AAA"の列が何番目なのかを取得して上記構文に代入しようとしているのですが、 どう記述すれば良いでしょうか? ちなみにうまくいきませんでしたが、イメージは下記の通りです。(笑 列番号 = Worksheets("sheet1").ListObjects("xxx").ListColumns("AAA").Column 宜しくお願い致します。

  • Excelマクロで他シートへの抽出:エラー

    こちらの質問 http://okwave.jp/qa/q4760155.html を参考に、エクセルマクロを作りました。 Sheet1の10列目(J)に@が入っている行をすべて、 Sheet2に抽出表示します。コードは次になります。 Private Sub Worksheet_Activate() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:N1").AutoFilter .Range("A1:N1").AutoFilter Field:=10, Criteria1:="@" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False End With End Sub このマクロを実行すると、確かにSheet2では抽出が行われるのですが、 同時にSheet1の内容も抽出された内容に変わってしまいます。 どこに問題があるのでしょうか。 よろしくお願いします。