このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】オートフィルタを設定する方法(AutoFilterメソッド)

2023年1月31日

【VBA】オートフィルターを設定する方法

今回はVBAでオートフィルタが設定する方法を紹介します。

オートフィルタの設定はAutoFilterメソッドで行うのですが、このメソッドは一癖あるため使い方に注意する必要があります。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

AutoFilterメソッドの注意点

初めにAutoFilterメソッドの注意点を説明します。

AutoFilterメソッドの注意点
Sub AutoFilterProblem()
    'フィルタ有の時は解除され、フィルタ無しの時は設定される
    ActiveSheet.Rows(1).AutoFilter
End Sub

画像のように1行目に見出しを設定して、上記のサンプルコードを何度か実行してみてください。

オートフィルタが付いたり消えたりするのが分かると思います。

  • オートフィルタが無い時 ⇒ オートフィルタが設定される
  • オートフィルタが有る時 ⇒ オートフィルタが消える

AutoFilterメソッドはこのような動作をします。

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

Sub SetAutoFilter()
    '''オートフィルタが設定されていない⇒1行目にオートフィルタを設定
    With ActiveSheet
        If Not .AutoFilterMode Then
            .Rows(1).AutoFilter
        End If
    End With
End Sub

そのため、オートフィルタを(消すことなく)設定したいときには、このようなコードを書く必要があります。

オートフィルタが設定されているかはAutoFilterModeプロパティで確認することができます。

このプロパティでオートフィルタの設定があるかを確認し、オートフィルタの設定がない場合のみAutoFilterメソッドを実行しています。

これならオートフィルタが無い時のみAutoFilterメソッドを実行してオートフィルタの設定ができます。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

VBA

Posted by やろまい