プロが教える店舗&オフィスのセキュリティ対策術

データの件数が増えてきたので、コンボボックスで選択した項目を一発で表示させるマクロを組みたいと思います。
前提は以下の通りです。
Webからの受け売りというか、書かれていた通りにやってみたのですが動作しません。どこが間違っているのでしょうか。
また、他にも方法があるようでしたらお知恵をお貸し下さい。

+++

マクロを実行させたいシートにはA3からK3までの項目があります。
そのうち、B3の項目でフィルタをかけたいです。

1.マクロを実行するシートとは別に「マスター」というシートを作成。
そこにコンボボックスにリンクさせる項目を入力。(A3:A16)
セルC1にINDEX関数を置き、(A3:A16)のそれぞれの値を文字に変換。

2.その変換した文字を変数に格納

3.もし、空白を選択してしまったら、マクロから抜ける

4.オートフィルタのセットは、既にセットされていたら一旦解除し再度セット。

5.変数に格納した文字をキーにして、オートフィルタで抽出する。

+++

Sub Combo_AutoFilter()

Application.ScreenUpdating = False

'変数宣言
Dim 選択項目 As Variant
Dim 実行シート名 As Variant

'現在のシート名の格納
実行シート名 = ActiveSheet.Name

'選択項目の格納
Sheets("マスター").Select
選択項目 = Cells(1, 3)

If 選択項目 = Empty Then
Sheets(実行シート名).Select
Exit Sub

End If

'オートフィルタのセット
Sheets(実行シート名).Select
If ActiveSheet.AutoFilterMode = True Then
Selection.AutoFilter
Range("A3:K3").Select
Selection.AutoFilter
Else
Range("A3:K3").Select
Selection.AutoFilter
End If

'オートフィルターで選択
Selection.AutoFilter Field:=2, Criteria1:=選択項目
Range("A3").Select

End Sub

+++

A 回答 (1件)

変数『選択項目』に代入されるデータは期待通りの物でしょうか



実際に操作してうまくいくて順を『新しいマクロの記録』で作成した物と見比べてみましょう

また、現状どのようなデータがあって 何をキーにしてどのような結果を期待するのか
実際にマクロを動作させた際にどの部分が期待に反する結果なのかを投稿しましょう

Sheets(実行シート名).Select
If ActiveSheet.AutoFilterMode = True Then
Selection.AutoFilter
Range("A3:K3").Select
Selection.AutoFilter
Else
Range("A3:K3").Select
Selection.AutoFilter
End If
の部分で
Range("A3:K3").Select
Selection.AutoFilter
は共通で使えると思いますから

Sheets(実行シート名).Select
Range("A3:K3").Select
If ActiveSheet.AutoFilterMode = True Then
  Selection.AutoFilter
End If
Selection.AutoFilter
といった具合に簡略か出来ますよ
    • good
    • 0
この回答へのお礼

結局、自分ではこれ以上時間が割けず、専任者にトスしてしまいました。
ご教示いただいたポイントは今後の参考にさせて頂きます。
また簡略化できる部分のアドバイスもありがとうございました。

お礼日時:2008/02/27 22:09

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

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