首页 > 解决方案 > 我如何获得一个动态数组,我将它调暗为什么?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.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

标签: excelvba

解决方案


您可以使用Range.Value来设置Array.

将您的代码更改为此简单版本。

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

#注意: 这将为您提供一个二维数组,因此要从中打印所有值,请使用

For i = Lbound(arrlist) to Ubound(arrlist)
    Debug.Print arrlist(i,1)
Next

只要确保引用任何重要的元素arrlist(i,1)1否则你会得到一个错误。


推荐阅读