3

我在这里的一些数组代码遇到了很多麻烦 - 如果我运行这个:

Sub ArrayRunner()

Dim PipeBArray() As Variant

Dim i As Integer

PipeBArray = ThisWorkbook.Sheets(1).Range("A1:A6").Value

MsgBox Str(UBound(PipeBArray)) & Str(LBound(PipeBArray))

For i = LBound(PipeBArray) To UBound(PipeBArray)
    MsgBox PipeBArray(i)
Next i

MsgBox "Done!"
End Sub

然后我得到错误 9 - for 循环中的行上的下标超出范围 - 当我观察变量 'i' 它告诉我 i 的值是一个......所以这发生在 for 循环的第一个实例上.

谁能帮我看看我在这里做错了什么?

感谢大家。

4

2 回答 2

2

当您将范围设置为这样的数组时,VBA 会自动使其成为二维数组。所以你需要像这样引用它:

MsgBox PipeBArray(i, 1) 

而不是:

MsgBox PipeBArray(i)

我会推荐此链接以获取更多信息。

于 2013-10-29T01:02:49.483 回答
0

还想补充一点

Dim Temp As Variant
Dim Dict As New Dictionary

' fill dictionary here

Temp = Dict.Items

创建一维数组。我只是遇到了与上面提到的麻烦相反的情况。

问候,乔

于 2013-10-29T04:34:15.640 回答