Excel 如何获得动态数组,以及将其暗显为什么?VBA

Excel 如何获得动态数组,以及将其暗显为什么?VBA,excel,vba,Excel,Vba,我最近开始使用数组,对它的工作原理感到非常困惑。当前阵列(可能会更改)从D4开始。我以后似乎无法使用数组列表进行筛选,如何正确加载数组 任何帮助都将不胜感激,提前谢谢 D 4 May 5 Ann 6 June Dim wb As Workbook Dim ws As Worksheet Dim arrlist() As String Set wb = ThisWorkbook Set ws = wb.Worksheets("WorkingSheet") lastrow = ws.C

我最近开始使用数组,对它的工作原理感到非常困惑。当前阵列(可能会更改)从D4开始。我以后似乎无法使用数组列表进行筛选,如何正确加载数组

任何帮助都将不胜感激,提前谢谢

   D
4 May
5 Ann
6 June


Dim wb As Workbook
Dim ws As Worksheet
Dim arrlist() As String

Set wb = ThisWorkbook
Set ws = wb.Worksheets("WorkingSheet")

lastrow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
numr = lastrow - 3

ReDim arrlist(0, 1 to numr)

ws.Range("D4:D" & lastrow).Select

For c = 1 To numr
    arrlist(0, c) = CStr(Selection(c, 1).Value) 
Next

您可以使用
Range.Value
设置
数组

将代码更改为此简单版本

Dim wb As Workbook
Dim ws As Worksheet
Dim arrlist() As Variant

Set wb = ThisWorkbook
Set ws = wb.Worksheets("WorkingSheet")

lastrow = ws.Cells(ws.Rows.Count, "D").End(xlUp).row

arrlist = ws.Range("D4:D" & lastrow).Value

'Additional Code
ReDim arr(1 To UBound(arrlist)) As Variant
For i = LBound(arrlist) To UBound(arrlist)
    arr(i) = arrlist(i, 1)
Next

wsd.Range($A$2:$AB$2260).AutoFilter Field:=2, Criteria1:=arr, Operator:=xlFilterValues
#注意:这将为您提供一个二维数组,因此要打印其中的所有值,请使用


只需确保使用
arrlist(i,1)
引用任何元素,即
1
非常重要,否则会出现错误。

我是否必须将arrlist设置为其他颜色?当它作为“类型不匹配”弹出时,其中
arrlist=ws.range….
Yes,将其调暗为变量。答案变了,行了!非常感谢。但是,当我尝试将其放入筛选器时,它只接受第一个数组值,其中wsd是目标工作表
wsd.Range($A$2:$AB$2260)。自动筛选字段:=2,准则1:=arrlist,运算符:=xlFilterValues
请尝试其他代码。你应该在问题中提到你想在过滤器中使用它。它可以被使用。但过滤器只接受一维数组。
For i = Lbound(arrlist) to Ubound(arrlist)
    Debug.Print arrlist(i,1)
Next