0

私は約 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()

4

1 に答える 1