.AutoFilter すると ON/OFF トグルするので、指定行にオートフィルタ適用されてるか確認して処理してます。
' オートフィルタの範囲の最初の行がRowNum行目か確認 Function IsAutoFilterOnRow(WorkBookName, SheetName, RowNum) As Boolean Dim ws As Worksheet Set ws = Workbooks(WorkBookName).Sheets(SheetName) ' シート名を必要に応じて変更 ' オートフィルタが設定されているか確認 If ws.AutoFilter Is Nothing Then IsAutoFilterOnRow = False Else ' オートフィルタの範囲の最初の行がRowNum行目か確認 If ws.AutoFilter.Range.Row = RowNum Then IsAutoFilterOnRow = True Else IsAutoFilterOnRow = False End If End If End Function ' 指定行にオートフィルタ設定 Sub SetAutoFilterForRow(WorkBookName, SheetName, RowNum, bEnable) Dim ws As Worksheet Set ws = Workbooks(WorkBookName).Sheets(SheetName) If bEnable = True Then If IsAutoFilterOnRow(WorkBookName, SheetName, RowNum) = True Then 'pass Else ws.Rows(RowNum).AutoFilter End If Else If IsAutoFilterOnRow(WorkBookName, SheetName, RowNum) = True Then ws.Rows(RowNum).AutoFilter Else 'pass End If End If End Sub