Vba 公共动态数组返回错误
大家好,我有个错误Vba 公共动态数组返回错误,vba,excel,Vba,Excel,大家好,我有个错误 Run-time error '9': Subscript out of range 使用以下代码 Public newarray() As String Sub test1() Dim int1 As Integer int1 = 0 Do int1 = int1 + 1 newarray(int1) = int1 * 5 Loop Until int1 > 3 End Sub
Run-time error '9':
Subscript out of range
使用以下代码
Public newarray() As String
Sub test1()
Dim int1 As Integer
int1 = 0
Do
int1 = int1 + 1
newarray(int1) = int1 * 5
Loop Until int1 > 3
End Sub
当我对数组进行去计数时
Public newarray(4) As string
它可以工作,但是我希望声明一个动态数组。请帮忙。谢谢。您可以使用
ReDim
分配阵列大小:
Public newarray() As String
Sub test1()
Dim int1 As Integer
ReDim newarray(4)
int1 = 0
Do
int1 = int1 + 1
newarray(int1) = int1 * 5
Loop Until int1 > 3
End Sub
这将重新定义整个阵列。如果需要保留数组的内容,只需更改大小,可以使用ReDim preserve newarray(4)
您的代码假定数组是基于1的。这可以是基于0的(在VB中通过选项设置)。为了确保您的代码在不考虑此选项的情况下都能正常工作,您应该使用LBound
/UBound
作为计数器的限制:
int1 = LBound(newarray)
Do
newarray(int1) = int1 * 5
int1 = int1 + 1
Loop Until int1 > UBound(newarray)
您可以使用
ReDim
分配数组大小:
Public newarray() As String
Sub test1()
Dim int1 As Integer
ReDim newarray(4)
int1 = 0
Do
int1 = int1 + 1
newarray(int1) = int1 * 5
Loop Until int1 > 3
End Sub
这将重新定义整个阵列。如果需要保留数组的内容,只需更改大小,可以使用ReDim preserve newarray(4)
您的代码假定数组是基于1的。这可以是基于0的(在VB中通过选项设置)。为了确保您的代码在不考虑此选项的情况下都能正常工作,您应该使用LBound
/UBound
作为计数器的限制:
int1 = LBound(newarray)
Do
newarray(int1) = int1 * 5
int1 = int1 + 1
Loop Until int1 > UBound(newarray)
您可以在ReDim语句中指定索引,如
ReDim newarray(1到5)
您可以在ReDim语句中指定索引,如ReDim newarray(1到5)