• ベストアンサー

EXCELマクロでワイルドカードを使ったオートフィルタ処理の方法がわからない

エクセルのマクロがうまく動かないので、教えてください。 あるセルにカーソルをおいて、そのセルの文字を含んだ文字で(ワイルドカードを使って)オートフィルタ処理をしたいのですが、 「構文エラー」となってしまいます。 Dim num As String num = ActiveCell.Value Sheets("リスト").Select Columns("AN:AN").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="=*"&num&"*", Operator:=xlAnd ActiveWindow.ScrollColumn = 2 Range("A1").Select Criteria1:="=*"&num&"*"の部分で 「構文エラー」になっているようなのですが… お分かりになる方教えてください。よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 特に、そこ自体に問題ないというか、 VBAの特徴なのですが、「&」の前後に半角スペースが必要です。 "=*"&num&"*"   ↓ "=*" & num & "*" 細かいことですが、この「*」アステリク を入れるというのは、対象も文字列ですから、数字が入れば、被検索対象列は、文字列でないといけないはずです。 Columns("AN:AN").Select また、通常、このような選択をするというのは、飛び石になっている途中の空白も含むという意味になります。ただし、データ列の最後尾から下のセルは含まれません。 Range("AN1").CurrentRegion となります。特に、CurrentRegion がなくても動作的には同じです。 ------------------------------------------------- Dim num As String num = ActiveCell.Value Sheets("リスト").Select 'Columns("AN:AN").Select ←不要 Range("AN1").CurrentRegion.AutoFilter Field:=1, Criteria1:="=*" & num & "*", Operator:=xlAnd 'ActiveWindow.ScrollColumn = 2  ←不要 'Range("A1").Select  ←不要 -------------------------------------------------

resortdiver
質問者

お礼

おお! ありがとうございます。解決できました

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2です。 数字文字列の場合うまくいくか心配になって。OKのようです。 シングルコーテイションを先頭に入れ数字入力ても、文字列書式にして入力しても。 例データ 計数 123 2312 2345 1222 43111 Sub test03() Dim num As String num = ActiveCell.Value cr = "*" & "23" & "*" Sheets("sheet3").Cells.AutoFilter Sheets("sheet3").Cells.AutoFilter Field:=1, Criteria1:=cr End Sub 結果 計数 123 2312 2345 ついでに、クライテリアの=は、=の場合に限り、省けるようです。

resortdiver
質問者

お礼

#3とあわせてありがとうございます たかがEXCEL、されどEXCELですね。 解決しましたありがとうございます

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

例データ A列 山田 太郎 植田 太吉 近藤 茂 鈴木 健太郎 小野 正治 太田 恵子 大田 Sub test03() Dim num As String num = ActiveCell.Value cr = "*" & "太" & "*" Sheets("sheet1").Cells.AutoFilter Sheets("sheet1").Cells.AutoFilter Field:=1, Criteria1:=cr End Sub で A列      山田 太郎 植田 太吉 鈴木 健太郎 太田 恵子 にないました。 #1でおっしゃっている&の前後スペースが原因でしょうか。 実行時にエラー指摘が出るようになっていたように思いますが。 Select、Selectionは省いて簡潔に。 Sheets("sheet1").Cells.AutoFilterはフィルタモードを解除の為に入れています。

関連するQ&A