Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将列表框输出到多个单元格以用于自动筛选数组_Vba_Excel - Fatal编程技术网

Vba 将列表框输出到多个单元格以用于自动筛选数组

Vba 将列表框输出到多个单元格以用于自动筛选数组,vba,excel,Vba,Excel,所以我有一个多选列表框,用户可以选择他们想要在数据集中过滤的区域 我当前使用以下子项将这些选择输出到单个单元格中: Dim listItems As String, i As Long With RegionListBox For i = 0 To .ListCount - 1 If .Selected(i) Then listItems = listItems & .List(i) & ", " Next i End With Range("A

所以我有一个多选列表框,用户可以选择他们想要在数据集中过滤的区域

我当前使用以下子项将这些选择输出到单个单元格中:

Dim listItems As String, i As Long
With RegionListBox
    For i = 0 To .ListCount - 1
        If .Selected(i) Then listItems = listItems & .List(i) & ", "
    Next i
End With

Range("AA1") = Left(listItems, Len(listItems) - 2)
在用户运行宏更新工作簿的最后,我希望使用从列表框输出的值应用过滤器。目前我是这样做的:

Worksheets("4. Booking Summary").Range("$A$1:$G$1000" _
).AutoFilter Field:=4, Criteria1:=(Range("$AA$1").Value),` Operator:=xlFilterValues
不幸的是,这不起作用,因为如果用户选择了多个选项,AA1中的输出将被格式化为“text,text,text”。当它尝试应用此筛选器时,它将应用带有该完整字符串的文本筛选器。要使其具有所需的功能,需要使用带有每个选定项的数组进行过滤

我有点纠结于如何实现这一点。我的想法是,我需要将每个列表框选择输出到单个单元格,然后将自动筛选条件设置为引用这些单元格的数组。我只是不知道该怎么做。欢迎您的建议。

您可以使用Split()创建数组:

Criteria1:=Split(Range("$AA$1").Value,", ")

Criteria1:=Split(范围($AA$1”)。Value,“,”
应该这样做,你是冠军。我想一定有办法用逗号分割这些值!它一直就在我面前。