首页 > 解决方案 > 在 Excel 中使用列表框选择进行数据过滤时出错

问题描述

我有组合列表框,我想通过它过滤从 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

在此处输入图像描述

标签: excelvbacomboboxlistbox

解决方案


ListBox1在那个范围内不存在。要么不叫它,要么不在范围内。验证名称,并进行相应修复。

但是代码甚至不应该首先被允许使用未定义的标识符进行编译。始终放在Option Explicit每个模块的顶部。

您可以勾选 VBE 选项对话框中的“需要变量声明”复选框以Option Explicit自动添加到每个模块。


推荐阅读