我正在制作一个小程序。在主表上,有两个组合框。
我想要做的是,如果我从每个组合框中选择值,它将过滤数据。但我面临一个小问题。我想在两个组合框中都有一个ALL值,并且在选择该值时,它不应该过滤该列。
到目前为止,我的代码是这样的:
Sub submit()
Dim ws As Worksheet, tbl As ListObject, rng As Range
Set ws = Sheets("Graphical Summary")
Set tbl = ws.ListObjects("Table5")
Set rng = tbl.DataBodyRange
With tbl
.Range.AutoFilter Field:=1
.Range.AutoFilter Field:=3
End With
With rng
If Sheets("Graphical Summary").ComboBox1.Value = "All" Then .AutoFilter Field:=2, Criteria1:=Sheets("Graphical Summary").ComboBox2.Value
If Sheets("Graphical Summary").ComboBox1.Value <> vbNullString Then .AutoFilter Field:=1, Criteria1:=Sheets("Graphical Summary").ComboBox1.Value
If Sheets("Graphical Summary").ComboBox2.Value <> vbNullString Then .AutoFilter Field:=2, Criteria1:=Sheets("Graphical Summary").ComboBox2.Value
End With
End Sub
答案 0 :(得分:0)
目前,如果ComboBox1是零长度字符串,则不在字段1上设置过滤器;扩展该条件以包括所有。
With rng
If ws.ComboBox1.Value <> vbNullString And
ws.ComboBox1.Value <> "All" Then _
.AutoFilter Field:=1, Criteria1:=ws.ComboBox1.Value
If ws.ComboBox2.Value <> vbNullString Then _
.AutoFilter Field:=2, Criteria1:=ws.ComboBox2.Value
End With
您已宣布 ws 并将其分配给表格(&#34;图形摘要&#34;);你也可以使用它。