エクセルVBA テーブルにも使える全シートのオートフィルターをクリア
プログラムを組んだ目的
ブックを閉じた時にオートフィルターの解除をするようにマクロを組んで次に使う人が使いやすくするためのマクロです。
テーブル機能を使っていてもクリアをすることができます。
プログラムの組み方
「Alt+F11」でVBAを開きます。
「ThisWorkbook」をダブルクリックで開き、以下のプログラムを記述していきます。
’イベントプロシージャの記述
Private Sub Workbook_BeforeClose(wb as Boolean)
Dim ws as Worksheet
’全シートを順番にactiveにするためのコード
For Each ws In Worksheets
ws.activate
’もしフィルターモードがtrueならフィルターをクリア
If ws.Filtermode = True Then
ws.ShowAllData
End If
Next
End Sub
プログラムの説明
- イベントプロシージャを使ってブックを閉じた時にイベントが発生するように設定します。
- ワークシートを変数に代入する
- 「For Each」を使って全てのシートオブジェクトを順番に取得するための記述をする(wsは変数)
- 「ws.activate」 でシート1から順番にアクティブにしていく
- 「if文」でもしシートでオートフィルターが使用されていたら全てを表示するように記述(フィルターのクリア)
- 「Next」によって全シート文繰り返し処理を実施する
テーブルを使用していると、「AutoFilterMode」を「False」にしても解除ができなかったので作成してみました。
共有して使用するファイルだったので、次に使う人が使いやすくなると思います。
Author And Source
この問題について(エクセルVBA テーブルにも使える全シートのオートフィルターをクリア), 我々は、より多くの情報をここで見つけました https://qiita.com/swallows9000/items/118376817d0caa85f7ba著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .