我正在尝试使用以下形式的代码来填充x行数组:
Dim myarray() As Variant
Dim string1 As String
Dim myarray_ubound As Integer
myarray_ubound = 0
For i = 1 to x
myarray_ubound = myarray_ubound + 1
ReDim Preserve myarray(1 To myarray_ubound, 1 To 2)
myarray(myarray_ubound,1) = i
myarray(myarray_ubound,2) = string1
Next i
但是,当我运行它时,它会在第一个循环后卡住,告诉我下标超出了范围。调试将我带到ReDim命令。
我使用myarray_ubound作为多次调用UBound函数的替代方法,但我也尝试过使用它,我也得到了同样的错误。
有人能发现出了什么问题吗?
答案 0 :(得分:3)
你只能重新训练数组的最后一个元素(不是第一个),见下文。如你所知x我建议从头开始用这个值重新编译你的数组。
Dim myarray() As Variant
Dim string1 As String
Dim myarray_ubound As Integer
myarray_ubound = 0
For i = 1 To 10
myarray_ubound = myarray_ubound + 1
ReDim Preserve myarray(1 To 2, 1 To myarray_ubound)
myarray(1, myarray_ubound) = i
myarray(2, myarray_ubound) = string1
Next i
答案 1 :(得分:3)
请参阅:http://msdn.microsoft.com/en-us/library/aa266231.aspx "如果您使用Preserve关键字,则只能调整最后一个数组维度,并且根本无法更改维度数。"
尝试
ReDim Preserve myarray(1 To 2, 1 To myarray_ubound)
代替。
答案 2 :(得分:1)
由于您将变量声明为Variant,因此我不知道为什么需要重新调暗。 (可能与记忆问题有关,请随时填写)。
我建议:
For i = 1 to 10
myArray(1, i-1) = i
myArray(2, i-1) = string1
next i