2013-01-21 72 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()的憎惡。 –