VBA フィルタを操作する
複数の人が操作(読み書き)をするようなファイルをVBAを使うとフィルタがかけられて思わぬエラーに遭遇したり書き込み消し込みが正常に機能しなかったり不具合が発生することがある。
一番シンプルで簡単なものはVBA操作の最初に3行を記入しておけば不具合は回避できる。
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
FilterModeはオートフィルタが絞り込まれているかどうか絞り込まれていればTrueを
絞り込まれていなければFalseが返されるので絞り込まれているときは
ShowAllDataで絞り込み解除するやり方である。
AutoFilterModeでオートフィルタが表示されているかどうかを判定したあとの処理でもよいがオートフィルタが表示されていない場合は上記の構文で判定はFalseが返されるのでオートフィルタの表示の有無にかかわらずこの3行で対処は可能である。
※オートフィルタを解除してVBA作業をしてあとでオートフィルタを表示を戻すやり方も考えられるが構文が複雑になり労多くして効果薄なので通常作業では避けたほうが無難である。
※すべてデータをクリアにしたい場合など絞り込みがされた状態では範囲を指定してクリアすると絞り込まれた箇所はクリアされないのでセルごとにクリアする手段もあるが非常に時間がかかり効率的でない。