0

我的 Excel 2010 工作簿中有一个包含大量数据的电子表格。此页面可以通过内置自动过滤器进行排序。在另一张纸上,我制作了一个按钮,用于进行一些排序。例如:

Sub forsteKvartalAftaleIndgaet()

'
    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:="<01-04", _
        Operator:=xlAnd
    Sheets("Ark2").Select
End Sub

Sub andenKvartalAftaleIndgaet()
'

    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:=">01-04", _
        Operator:=xlAnd, Criteria2:="<01-07"
    Sheets("Ark2").Select
End Sub

当我这样做时,表格显示了今年的第一季度和第二季度。我有两个按钮,分别显示今年的第三季度和第四季度,如下所示:

Sub TredjeKvartalAftaleIndgaet()
'

    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:=">01-07", _
        Operator:=xlAnd, Criteria2:="<01-10"
    Sheets("Ark2").Select
End Sub


Sub FjerdeKvartalAftaleIndgaet()
'

    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:=">01-10", _
        Operator:=xlAnd, Criteria2:="<31-12"
    Sheets("Ark2").Select
End Sub

我的问题:当我按下按钮(第二季度)时,它会过滤并显示第二季度。但是当我按下“第三季度”按钮时,它会删除第二季度过滤器并显示第三季度。

是否可以编写某种 VBA 代码,使其可以同时按下两个按钮,就像可以使用内置自动过滤按钮一样?

如果您不太确定我的意思,请寻求更好的解释。

提前致谢

4

2 回答 2

1

大概是这样的?那么这两种方式都适用吗?即

1)您先选择第二季度,然后它会显示第二季度,然后当您按第三季度时,它将显示第二和第三季度。

2)您先选择第 3 节,然后它会显示第 3 节,然后当您按第 2 节时,它将显示第 2 节和第 3 节。

注意:我没有测试过代码,所以如果你有任何错误请告诉我:)

Dim strCrt1 As String, strCrt2 As String, strCrt3 As String, strCrt4 As String

Sub andenKvartalAftaleIndgaet()
    strCrt1 = ">01-04"
    strCrt2 = "<01-07"

    With Sheets("AMRM01")
        If strCrt4 <> "" Then
            .Range("$A$12:$P$76").AutoFilter Field:=2, _
            Criteria1:=strCrt1, Operator:=xlAnd, _
            Criteria2:=strCrt4
        Else
            .Range("$A$12:$P$76").AutoFilter Field:=2, _
            Criteria1:=strCrt1, Operator:=xlAnd, _
            Criteria2:=strCrt2
        End If
    End With
End Sub

Sub TredjeKvartalAftaleIndgaet()
    strCrt3 = ">01-04"
    strCrt4 = "<01-07"

    With Sheets("AMRM01")
        If strCrt1 <> "" Then
            .Range("$A$12:$P$76").AutoFilter Field:=2, _
            Criteria1:=strCrt1, Operator:=xlAnd, _
            Criteria2:=strCrt4
        Else
            .Range("$A$12:$P$76").AutoFilter Field:=2, _
            Criteria1:=strCrt3, Operator:=xlAnd, _
            Criteria2:=strCrt4
        End If
    End With
End Sub
于 2012-05-21T11:42:20.220 回答
0

我不太明白,但听起来你只是想同时展示第 2 季度和第 3 季度?我认为你需要它自己的宏。

Sub secondAndThirdQuarter()

    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:=">01-04", _
        Operator:=xlAnd, Criteria2:="<01-10"
    Sheets("Ark2").Select

End Sub

这不会给出您正在寻找的相同结果吗?我不知道是否可以使用 VBA 过滤过滤器。

于 2012-05-21T07:14:26.440 回答