小さい会社の1人SEの開発記というか奮戦記

  1. Excel
  2. 497 view

オートフィルタをコントロールする【Excel VBA】

オートフィルタって検索する時便利ですよね。これをVBAで扱おうとすると少しコツがいります。覚えておけば何ともない話ですので覚えておきましょう。今回はオートフィルタの使い方をまとめます。

オートフィルタをVBAで使う時の注意点

オートフィルタは他の命令と異なり、「範囲を設定してオートフィルターを宣言する」だけです。

ONとかOFFとか明示的に指定できるものでは無く、宣言ごとに ON → OFF → ON → OFF と切り替わります。

なので今オートフィルタがONなのかOFFなのかを判定するのがポイントになります。

AutoFilterMode で判断する

シート.AutoFilterMode が true か false かで判断します。

true で設定されている。false で解除されている。です。

If文と使うのが一般的ですね。

オートフィルターを設定する

AutoFilterMode = false ならばオートフィルターを設定します。

VBAで記述すると

' オートフィルタが解除されている場合

If (ActiveSheet.AutoFilterMode = False) Then

    ' セルを指定し、オートフィルタを設定する

    Range("B1:H1").AutoFilter

End If

となります。

オートフィルターを解除する

逆のことをやればいいので、AutoFilterMode = true ならばオートフィルターを解除します。

' オートフィルタが設定されている場合

If (ActiveSheet.AutoFilterMode = True) Then

    ActiveSheet.Range("A1").AutoFilter

End If

解除する場合のセルの指定は何でもいいようです。

まとめ

データベースからデーターを抽出する場合オートフィルターをかけられていて期待と異なる抽出結果になる場合があります。

その様な懸念がある場合は、検索前にオートフィルターを解除して、検索後にオートフィルターを設定しておくと事故の回避になります。

Excelの最近記事

  1. 日本語をエンコードする【Excel VBA】

  2. 商品コードなど長い数値だけの文字列を指数表示させない【Excel VBA】

  3. VBAで改行を指定する【Excel】

  4. 入力規則のプルダウン連携【Excel】

  5. 最短手順で計算式を保護する【Excel】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


お薦め書籍

最近の記事

  1. Access

    Accessの数値型ではまる・・・。
  2. Excel

    日本語をエンコードする【Excel VBA】
  3. Access

    クエリで日付から曜日を算出する。【Access】
  4. PCパーツ

    ASUS AMD Ryzen 4000 シリーズ搭載小型ベア…
  5. Microsoft365

    コンデジをTeamsのWebカメラに使う
  6. SQL Server

    SQL文で今日から7日前までを指定する