如何查看数组中的项目

时间:2018-07-23 19:51:29

标签: excel vba

我在 s.Date IS NOT NULL AND ISDATE(s.Date) = 1 AND LEN(s.Date) > 4 AND s.Date < GETDATE()) 上获得Subscript out of range

Debug.Print myarr(i)

我已经用(如下)验证了显示A2:A5的范围

Dim ws As Worksheet: Set ws = Sheets("Sheet1")
Dim myarr as Variant, i as Long
myarr = Array(ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row))

For i = LBound(myarr) To UBound(myarr)
    Debug.Print myarr(i)
Next i

我还尝试将Msgbox ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row)).Address (false, false) 更改为

myarr

第一个给出 = ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row) = ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row).Value = Array(Temp.Range("A2:A" & Temp.Range("A" & Temp.Rows.Count).End(xlUp).Row).Value) ,第二个给出Subscript out of range

使用数组尚属陌生,我不知道我在这里缺少什么。 我是错误地加载了阵列还是试图错误地查看阵列中的项目?

2 个答案:

答案 0 :(得分:5)

myarr是具有一列的两个二维数组。

您需要将引用添加到第二维。

Debug.Print myarr(i,1)

要从某个范围加载数组,您只需分配值即可:

myarr = ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row).Value

如此

Dim ws As Worksheet: Set ws = Sheets("Sheet1")
Dim myarr as Variant, i as Long
myarr = ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row).Value

For i = LBound(myarr,1) To UBound(myarr,1)
    Debug.Print myarr(i,1)
Next i

答案 1 :(得分:0)

要添加,可以在VBA Locals Window(开发人员-> Visual Basic->视图->本地)中查看数组大小和元素。这对于代码编译真的很有帮助,我一直都在使用它。