オートフィルターは目的のデータのみ表示させることができる便利な機能です。しかし、フィルターによる絞り込みをした状態に気付かなかったり忘れていたりした場合、並び替えなどを実行すると思わぬ結果を表示してしまう恐れがあります。並べ替え等、何らかの処理を実行する前に、不本意な結果にならない様に、あらかじめオートフィルターを自動で解除する様にプログラムを組みます。
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のサイト ファイル名「170822_フィルター解除VBA.xlsm」
余談ですが、私はこのフィルター解除を忘れてプログラムを実行した結果を見て、何回も後悔させられました。その経験からこのプログラムをやりたいことを記述したプログラムの頭部分に入れて、意図しない動作を防止しています。
読者の方へ。過去の記事をご覧になられていて、「画像」が上手く表示されない場合は、「hiro-yukioのサイト」の「過去のブログ記事」フォルダーにPDFで保存しましたのでこちらでご覧下さい。
8月7日の記事にプログラムの名称に誤りがありましたが、修正ずみです。

