絞り込んだ条件を調べる
通常範囲の各列について、取得できるフィルター条件をイミディエイトウィンドウへ表示します。
実行前に確認
- ThisWorkbook はこのコードを保存したブックです。この例はセルの値や書式を書き換えません。
- 日付グループ・色・アイコン等の条件を完全保存する例ではありません。条件の型やExcelの版により取得できない場合を明示します。
1サンプルコード
Option Explicit
Sub Example1096()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim i As Long, item As Variant, criterion As Variant, f As Filter
If Not ws.AutoFilterMode Then
MsgBox "通常範囲のフィルターはありません。": Exit Sub
End If
For i = 1 To ws.AutoFilter.Filters.Count
Set f = ws.AutoFilter.Filters(i)
If f.On Then
Debug.Print "列=" & i & ", Operator=" & f.Operator
On Error Resume Next
Err.Clear
criterion = f.Criteria1
If Err.Number = 0 Then
If IsArray(criterion) Then
For Each item In criterion
Debug.Print "Criteria1:", item
Next item
Else
Debug.Print "Criteria1:", criterion
End If
Else
Debug.Print "Criteria1は取得できません。"
End If
Err.Clear
criterion = f.Criteria2
If Err.Number = 0 Then
If IsArray(criterion) Then
For Each item In criterion
Debug.Print "Criteria2:", item
Next item
Else
Debug.Print "Criteria2:", criterion
End If
Else
Debug.Print "Criteria2は未設定、または取得できません。"
End If
On Error GoTo 0
End If
Next i
MsgBox "VBEのCtrl+Gで出力を確認してください。"
End Sub図で見る操作の流れ
イメージ図コードに沿った概念図です。実際の画面や実行結果ではありません。
手動:条件を設定
Sheet1の通常範囲にフィルター条件を設定
マクロ:有効な列を調べる
フィルターが有効な列の番号と演算子を出力
マクロ:条件を出力
Criteria1・Criteria2を取得し、配列なら要素ごとに出力
手動:出力を見る
VBEでCtrl+Gを押してイミディエイトウィンドウを確認
通常範囲のフィルターがなければ終了。条件が未設定・取得不可ならその旨を出力します。色・日付などの条件の完全な保存ではありません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用ブックを .xlsm 形式で保存し、Sheet1 という名前のシートを用意します。Sheet1のA1:C11に表を用意します。1行目は見出し(A=地域、B=金額、C=日付)、2~11行目はデータです。テーブル形式ではない通常範囲で試します。先に条件を設定し、VBEでCtrl+Gを押して出力欄を開きます。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 3
コード内の参照先や判定条件を必要に応じて変更します。実行してもセルの値や書式は変わりません。Excelに戻り、Alt+F8で Example1096 を選んで実行します。
- 4
有効な列番号、演算子、取得可能な条件が出力されます。