我的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代码,这样可以同时按下两个按钮,就像可以使用自动过滤器按钮构建一样?
如果您不确定我的意思,请寻求更好的解释。
提前致谢
答案 0 :(得分:1)
也许这样的事情?这两种方式都适用吗? i.e.if
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
答案 1 :(得分: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过滤过滤器。