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
実行結果 フィルターは解除されてますが、利用者はフィルターを使える状態