アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのマクロがうまく動かないので、教えてください。
あるセルにカーソルをおいて、そのセルの文字を含んだ文字で(ワイルドカードを使って)オートフィルタ処理をしたいのですが、
「構文エラー」となってしまいます。

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&"*"の部分で
「構文エラー」になっているようなのですが…
お分かりになる方教えてください。よろしくお願いします。

A 回答 (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  ←不要

-------------------------------------------------
    • good
    • 2
この回答へのお礼

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

お礼日時:2007/07/15 11:17

#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
ついでに、クライテリアの=は、=の場合に限り、省けるようです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/07/15 11:20

例データ


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はフィルタモードを解除の為に入れています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A