2013-01-21 71 views
0

我想了解动态数组初始化。在下面的代码中,为什么即使在输入“y”的值之后数组大小仍未设置。即使在给Y赋值为4,5时,Lbound和Ubound都显示为0。VB脚本 - 动态数组

请给我解释一下。谢谢。

Dim i 

Redim arr(y) 

y = cint(InputBox("Enter value of y")) 

Msgbox Lbound(arr) 

Msgbox Ubound(arr) 

回答

2

你应该REDIM后要求的值。

-1

你正在reDiming什么都没有,因此你什么也没有重做,因此它什么都没有返回。 ReDim更适合在已经声明之后增加数组的大小,而不是用于初始声明。

使用

Dim array(1) as Integer 
y = cint(InputBox("Enter value of x")) 
Redim array(y) 

或者说,不是很高兴看到

y = cint(InputBox("Enter value of x")) 
Dim array(y) 
+0

在VBScript中,你不能创建一个变量作为特定类型的,所以'维数组(1)Integer'将失败。在将其重新标注为所需的大小('ReDim array(y)'或'ReDim Preserve array(y)')之前,您需要将数组实例化为一个空数组('Dim array()')。 –

+0

@Gyhth -1不是VBScript,而是VBA; ReDim()可以/应该用于初始声明(尽管它的名字);第二个例子抛出错误1026 /执行整数常量。 –

+0

@AnsgarWiechers - 你不应该使用* Dim a()*;它确实*不*创建一个空数组,而是VBScript甚至无法使用UBound()的憎恶。 –