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)
我想了解動態數組初始化。在下面的代碼中,爲什麼即使在輸入「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)
你應該REDIM後要求的值。
你正在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)
在VBScript中,你不能創建一個變量作爲特定類型的,所以'維數組(1)Integer'將失敗。在將其重新標註爲所需的大小('ReDim array(y)'或'ReDim Preserve array(y)')之前,您需要將數組實例化爲一個空數組('Dim array()')。 –
@Gyhth -1不是VBScript,而是VBA; ReDim()可以/應該用於初始聲明(儘管它的名字);第二個例子拋出錯誤1026 /執行整數常量。 –
@AnsgarWiechers - 你不應該使用* Dim a()*;它確實*不*創建一個空數組,而是VBScript甚至無法使用UBound()的憎惡。 –