Excel オートフィルターの扱い

VBA で Excelシートを、Read Write するとき、そのシートにフィルターがかかっていると誤動作しやすいです。

それで、シートを扱う前に オートフィルターを次の方法で調整します。

 

①もし フィルターがかかっていたら、フィルターを解除する。

②後で利用者の利便性のために、フィルターを設定する。すなわちフィルタリングはしないけど、いつでもフィルター操作できる状態にする。

 ------------------------------------------------------

’サンプルコード

Private Sub シートのオートフィルターを解除する(ByVal sWS As String, _
                                                                                Optional R As Long = 10)
    Dim oWS As Worksheet
    Set oWS = Thisworkbook.Sheets(sWS)
    oWS.Select
    If oWS.AutoFilterMode = True Then   'オートフィルタを解除する
           oWS.AutoFilter.Range.AutoFilter
    End If
     oWS.Rows(R & ":" & R).Select
     Selection.AutoFilter       ’オートフィルターをセットする
     oWS.Range("B" & R).Select
End Sub

'実行コード

Private Sub TestFilter()
    Call シートのオートフィルターを解除する("Sheet1")
End Sub

 実行結果 フィルターは解除されてますが、利用者はフィルターを使える状態

f:id:nminebb:20191210084619p:plain