Macro / Private Sub:同时在多张纸上设置类似的过滤器

时间:2013-12-09 13:50:09

标签: excel excel-vba vba

我使用名为的工作表; Rev00,Rev01,Rev02等 - 我工作手册中的其他表格。

非常有用(为了比较不同修订版的子摘要),设置完全相同的多重过滤器 - 在活动表中设置 - 仅在以“Rev”开头的所有工作表中。

最想要通过双击Range("A1")或类似的地方激活此动作(我不想要这个按钮)。

如果可能,下一次双击范围(“A1”)应重置过滤器。

Sub Test()
    Dim ws As Worksheet, str As String        
    For Each ws In Worksheets            
            str = Left(ws.Name, 3)                    
                If str = "Rev" Then                        
                    ' set filter as in active.sheet                    
                End If
     Next ws
End Sub

......我被困了...... 有人会指导我吗?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。 :)这是一个关于它应该如何工作的基本样本。

Sub Test()
    Dim ws As Worksheet, str As String

    For Each ws In Worksheets
        str = Left(ws.Name, 3)
        If UCase(str) = "REV" Then
            With ws
                '~~> Remove any filters
                .AutoFilterMode = False

                With <YOUR RANGE>
                    .AutoFilter Field:=<RELEVANT FIELD>, _
                                Criteria1:=<YOUR CRITERIA>

                    '
                    '~~> Rest of the code
                    '
                End With

                '~~> Remove any filters
                '.AutoFilterMode = False
            End With
        End If
    Next ws
End Sub

Here你可以看到自动过滤器在运行:)

要点击范围A1调用上述代码,您可以使用Worksheet_BeforeDoubleClick事件。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        '
        '~~> Your code goes here
        '
        Cancel = True
    End If
End Sub

关于使Range A1作为ON / OFF开关响应的查询,您可以使用显示为HERE的布尔变量