我一直在寻找解决方案,无法在网上找到任何可以完全解释发生了什么的内容。我查看了其他一些帖子,但它们似乎都有点短暂。
当我运行这段代码时,它可以完美地工作(因为它已被记录)。
ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, Criteria1:=Array( _
"73578", "78759", "78765"), Operator:=xlFilterValues
但是当我试图让它变得更强大时,它失败了。我想将Criteria1参数更改为已存储的数组。
我正在努力让以下工作。
ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _
Criteria1:=Array(StoredArray.Values), Operator:=xlFilterValues
我存储了数组并且我操纵它但是我还没有得到任何工作。我也尝试创建一个与录制的宏完全相同的字符串,但这也不起作用。
Dim StoredArrayString as Variant
StoredArrayString = "73578"", ""78759"", ""78765"
ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _
Criteria1:=StoredArrayString, Operator:=xlFilterValues
感谢您的帮助,我花了很多时间在MSDN上试图研究这个问题,但无法找到解决方案。
答案 0 :(得分:1)
我认为您的问题在于您如何定义阵列。试试这个。
Dim StoredArrayString As Variant
StoredArrayString = Array("73578", "78759", "78765")
ActiveSheet.Range("$A$1:$AL$1002").AutoFilter Field:=17, _
Criteria1:=StoredArrayString, Operator:=xlFilterValues
答案 1 :(得分:0)
从:
开始并运行:
Sub Macro7()
Dim ary(1 To 3) As String
ary(1) = "Alice"
ary(2) = "Boris"
ary(3) = "James"
ActiveSheet.Range("$A$1:$D$22").AutoFilter Field:=3, Criteria1:=ary, Operator:=xlFilterValues
End Sub
将产生:
答案 2 :(得分:0)
我也有类似的问题。
我正在尝试使用数组作为标准,但我的标准(目前为 1/1/2023)是动态的并且位于另一个工作表中。例如,如何获取代码以从其他工作表 (Sheet3) 中选取此条件。
'
' data_test_2 Macro
'
'
With Worksheets("LNG_PORTFOLIO_2023_SG_HIST").Range("A1")
.AutoFilter Field:=28, Operator:=xlFilterValues, Criteria2:=Array(1, "1/1/2023")
End With
End Sub```