- ベストアンサー
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&"*"の部分で 「構文エラー」になっているようなのですが… お分かりになる方教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 特に、そこ自体に問題ないというか、 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 ←不要 -------------------------------------------------
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#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 ついでに、クライテリアの=は、=の場合に限り、省けるようです。
お礼
#3とあわせてありがとうございます たかがEXCEL、されどEXCELですね。 解決しましたありがとうございます
- imogasi
- ベストアンサー率27% (4737/17069)
例データ 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はフィルタモードを解除の為に入れています。
お礼
おお! ありがとうございます。解決できました