私は約 1 時間半このエラーに悩まされてきましたが、答えを見つけることができませんでした。多分あなたは私を助けることができます。
シートに「フィルター」というラベルの付いた列を見つける短いサブがあります。その列のオートフィルターをオンにして非表示にします。
Sub Test1()
Call FilterHide(Worksheets("Integration"))
Call FilterHide(Worksheets("Integration Matrix"))
End Sub
Sub FilterHide(ByVal target As Worksheet)
'
'Searches for filter column, then autofilters selection to show only "Show"
Dim clm As Integer
If IsError(Application.Match("Filter", target.Range("1:1"), 0)) Then
Exit Sub
End If
clm = Application.Match("Filter", target.Range("1:1"), 0)
target.Range(Columns(clm), Columns(clm)).AutoFilter Field:=1, Criteria1:="Show"
target.Range(Columns(clm), Columns(clm)).EntireColumn.Hidden = True
End Sub
「FilterHide()」は、一度呼び出すと正常に動作します。ただし、別のシートで別のサブから 2 回呼び出そうとすると、壊れます (上記の「Test1()」など)。「実行時エラー 1004: オブジェクト '_Worsksheet' のメソッド 'Range' が失敗しました。」次に、デバッガーは次の行を示します
target.Range(Columns(clm), Columns(clm)).AutoFilter Field:=1, Criteria1:="Show"
FilterHide()
一度に 1 つずつ実行すると、すべてのシートに対して正常に実行できます。エラーが発生するのは、複数回呼び出したときだけです。私の最終的な目標は、約 7 つの異なるワークシートWorksheet_Deactivate()
で実行されるイベントを作成することです。FilterHide()