オートフィルターの解除 ← 便利だがプログラム実行時には解除が安全! | 50歳からのエクセルプログラミング

50歳からのエクセルプログラミング

ブログでお伝えしたい事は、プログラムを使うと著しく業務効率が上がると言う事です。興味がある方はプログラムを動かしてその素晴らしさを体感して下さい。無限の可能性を秘めたプログラミングの世界をご紹介して参ります。

 オートフィルターは目的のデータのみ表示させることができる便利な機能です。しかし、フィルターによる絞り込みをした状態に気付かなかったり忘れていたりした場合、並び替えなどを実行すると思わぬ結果を表示してしまう恐れがあります。並べ替え等、何らかの処理を実行する前に、不本意な結果にならない様に、あらかじめオートフィルターを自動で解除する様にプログラムを組みます。

 

Option Explicit

Sub オートフィルターの解除()

 

With ActiveWorkbook.ActiveSheet

 

    '-------------------------------------------------

    'オートフィルターが設定されている場合は解除する。

    .Activate

    If .AutoFilterMode Then

            Rows("1:1").AutoFilter

        Else

    End If

End With

 

End Sub

 

 全13名の合計点で降順にソート予定であったが、合計点が、260点以上で絞り込みをしている状態でソートを実行すると、下図の様に意図する並べ替えが出来ません。そこで・・・

 

 単に、フィルターを解除するだけですが、Module1のプログラムを実行してみて下さい。

 

 余談ですが、私はこのフィルター解除を忘れてプログラムを実行した結果を見て、何回も後悔させられました。その経験からこのプログラムをやりたいことを記述したプログラムの頭部分に入れて、意図しない動作を防止しています。

 

読者の方へ。過去の記事をご覧になられていて、「画像」が上手く表示されない場合は、「hiro-yukioのサイト」の「過去のブログ記事」フォルダーにPDFで保存しましたのでこちらでご覧下さい。

hiro-yukioのサイト

 

 8月7日の記事にプログラムの名称に誤りがありましたが、修正ずみです。