【发布时间】:2020-01-27 01:52:28
【问题描述】:
我有一个组合列表框,我想通过它过滤从 I6 到 L21 的表。这是列表框和表格的快照。 但是,当我选择一个或多个选项并尝试从表中过滤数据时,它会给我“需要对象”错误。 这是我的代码
Sub cmd1_Click()
Dim x As Variant
ReDim x(0)
Application.ScreenUpdating = False
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
x(UBound(x)) = ListBox1.List(i)
ReDim Preserve x(UBound(x) + 1)
End If
Next i
Sheet2.Range("I6:L35").AutoFilter Field:=3, Criteria1:=x, Operator:=xlFilterValues
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
哪里出错了?
-
For i = 0 To ListBox1.ListCount - 1
-
Option Explicit丢失,ListBox1未定义。 -
还可以考虑使用
ReDim x(0 To {ListBox1}.ListCount - 1)来调整数组的大小,而不是每次迭代时都复制它,只是为了再添加一个项目(在弄清楚ListBox1的实际名称之后 - 请注意这里没有人可以知道这一点。如果列表框没有项目,您将要立即退出(Exit Sub)。 -
@MathieuGuindon 列表框就在您眼前。
标签: excel vba combobox listbox