如何从Excel

时间:2018-05-28 16:10:49

标签: arrays excel vba

我有一个这样的数组:

myColumns = Array("Serial","Practice","Manager", "QTD")

但是我想从工作表中获取其值以使其更具动态性。 (价值和数量可能会有所不同)

enter image description here

所以我试过这个来影响从列的A2到最后一个值到我的数组的范围:

myColumns = Range(Range("A2"), Range("A2").End(xlDown)).Value

结果是:

UBound(myColumns) -> 4 -> OK

但是当我这样做时:

s = myColumns(3) -> Subscribe out of range ! 

这怎么可能?

如何正确填充? 谢谢!

1 个答案:

答案 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

enter image description here

如果你解析单行,你应该转置两次:

Sub TestMe2()
    Dim myArr As Variant
    With Application
        myArr = .Transpose(.Transpose(Range("A1:AI1")))
    End With
End Sub

enter image description here

如果您只是解析多个范围或没有.Transpose(),则必须同时引用列和行:

enter image description here