← コード一覧へ戻る
実務フィルター

オートフィルタの適用範囲を調べる

通常範囲のオートフィルターが対象にしているセル範囲を表示します。

実行前に確認

  • ThisWorkbook はこのコードを保存したブックです。この例はセルの値や書式を書き換えません。
  • Excelテーブルの範囲を調べる場合はListObjectを使います。

1サンプルコード

Option Explicit

Sub Example1091()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    If Not ws.AutoFilterMode Then
        MsgBox "通常範囲のフィルターはありません。": Exit Sub
    End If
    MsgBox ws.AutoFilter.Range.Address(External:=True)
End Sub

図で見る操作の流れ

イメージ図

概念図:設定済みのフィルター範囲を読み取ります。

  1. 手動:準備

    Sheet1の通常範囲A1:C11にフィルターを設定

  2. マクロ:取得

    フィルターの存在を確認し、AutoFilter.Rangeを読む

  3. 結果

    見出しを含む範囲を、ブック・シート名付きで表示

通常範囲のフィルターがなければ終了。Excelテーブルの調査にはListObjectを使います。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    練習用ブックを .xlsm 形式で保存し、Sheet1 という名前のシートを用意します。Sheet1のA1:C11に表を用意します。1行目は見出し(A=地域、B=金額、C=日付)、2~11行目はデータです。テーブル形式ではない通常範囲で試します。先にオートフィルターを設定します。

  2. 2

    Alt+F11でVBEを開き、[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  3. 3

    コード内の参照先や判定条件を必要に応じて変更します。実行してもセルの値や書式は変わりません。Excelに戻り、Alt+F8で Example1091 を選んで実行します。

  4. 4

    見出しを含むフィルター範囲の番地が表示されます。

使っている機能の公式ドキュメント(Microsoft Learn)