我在 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
使用数组尚属陌生,我不知道我在这里缺少什么。 我是错误地加载了阵列还是试图错误地查看阵列中的项目?
答案 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->视图->本地)中查看数组大小和元素。这对于代码编译真的很有帮助,我一直都在使用它。