我有一个这样的数组:
myColumns = Array("Serial","Practice","Manager", "QTD")
但是我想从工作表中获取其值以使其更具动态性。 (价值和数量可能会有所不同)
所以我试过这个来影响从列的A2到最后一个值到我的数组的范围:
myColumns = Range(Range("A2"), Range("A2").End(xlDown)).Value
结果是:
UBound(myColumns) -> 4 -> OK
但是当我这样做时:
s = myColumns(3) -> Subscribe out of range !
这怎么可能?
如何正确填充? 谢谢!
答案 0 :(得分:2)
Application.Transpose
是您的好朋友,如果您解析单个列:
Sub TestMe1()
Dim myArr As Variant
myArr = Application.Transpose(Range("A1:A10"))
Dim cnt As Long
For cnt = LBound(myArr) To UBound(myArr)
Debug.Print myArr(cnt)
Next cnt
End Sub
如果你解析单行,你应该转置两次:
Sub TestMe2()
Dim myArr As Variant
With Application
myArr = .Transpose(.Transpose(Range("A1:AI1")))
End With
End Sub
如果您只是解析多个范围或没有.Transpose(),则必须同时引用列和行: