这是我的第一个问题,所以我正在尽力遵守规则。
我尝试修改一个适用于单个字符串变量的自动过滤代码。工作代码是:
Dim fruitName As String
fruitName = Range("Fruit[Fruit_Name]")(2)
ActiveSheet.ListObjects("allFruit").Range.AutoFilter Field:=1, Criteria1:="<>" & fruitName
现在我想进行类似的动作,但有两个或更多的水果。搜索后,我发现我可以在一个变体数组中存储我创建的命名范围中的水果选择,并在标准中使用它。
Dim FruitNames() As Variant
FruitNames = Range("ChosenFruitNames")
ActiveSheet.ListObjects("allFruit").Range.AutoFilter Field:=1, Criteria1:= chosenFruitNames
使用上面的代码,自动过滤器中的条件可以正常工作。但是,如果我想要使用 NOT 选择的水果过滤表格,它将无效。我尝试使用以下Criteria1:="<>" & chosenFruitNames
执行此操作,但我得到了
Complile error:类型不匹配
我花了几个小时搜索解决方案,但我只找到了数组标准的示例,但没有找到特定的&lt;&gt;我需要的。以下是我正在使用的代码。
Dim FruitNames() As Variant
FruitNames = Range("chosenFruitNames")
ActiveSheet.ListObjects("allFruit").Range.AutoFilter Field:=1, Criteria1:="<>" & chosenFruitNames
Rows("3:3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
对此的任何帮助都将受到极大的赞赏。 提前谢谢了 Nasos
答案 0 :(得分:1)
未经测试,但请尝试一下:
Dim arr() As Variant
Dim i As Long
Dim count As Long
count = Range("chosenFruitNames").Count
ReDim arr(1 to count)
For i = 1 to UBound(arr)
arr(i) = Range("chosenFruitNames")(i).Value
Next i
ActiveSheet.ListObjects("allFruit").Range.AutoFilter Field:=1, Criteria1:=arr, Operator:=xlFilterValues