ファイル起動時に、フィルターによる絞り込みを解除する。
本日、このような相談を受けた。
Excelファイルで作った台帳に、フィルターを掛けている。
これについて起動時に自動で、各列の表示を全選択状態にできないか。
問い合わせの背景:
先日、ある列で特定の値だけを表示したまま保存終了したところ、
他の方がそれに気づかず、迷惑をかけてしまったとのこと。
相談に応えるべく、挑戦してみた。
今回の相談は、例えば先日の表で言えば、みかんだけを表示して保存終了したような状況を指している。
別の人がファイルを開いて驚く。
「あれ?『みかん』しかない!?」
この場合、りんごとバナナにチェックを入れ直すという考え方もあるが、チェック漏れが起きるかもしれない。ここは素直に、以下の作戦をとることにした。
- オートフィルターが掛かっているか確認する。
- 掛かっている場合、その範囲を取得する。
- 同範囲に対して一旦、オートフィルターを解除。
- 同範囲に対し改めて、オートフィルターを設定。
これで、どのような絞り込みが為されていようとも、全てが表示された状態に戻ってくれる。エッセンスだけを書くと、このような感じだ。
Private Sub Workbook_Open() Dim FilterRange As Range If ActiveSheet.AutoFilterMode = True Then Set FilterRange = ActiveSheet.AutoFilter.Range ' 一旦フィルターを解除。 FilterRange.AutoFilter ' 再度フィルターを設定。 FilterRange.AutoFilter End If End Sub
ファイル起動時にということだったので、Workbook_Openイベントに設定した。
今回はこれで無事、相談にこたえることが出来た。でめたし。
参考まで。
~ 追記 ~
ことりちゅんさんからのご助言により、もっと単純に ↓ で解決できることを知りました。
Private Sub Workbook_Open() Dim FilterRange As Range If ActiveSheet.AutoFilterMode = True Then ActiveSheet.AutoFilter.ShowAllData End If End Sub
いつも有難うございますm(_ _)m