2016-05-05 4 views
0

サイズを指定せずにVBScriptで配列を初期化しようとしていますが、「下付き文字が範囲外です。サイズを指定せずにVBScriptで配列を初期化するとエラーが発生する

Option Explicit 
dim arr() 
arr(0)=2 
Call MsgBox("arr: " & arr(0)) 'It prints 2 

2行目をdim arr(1)に編集するだけで動作します。

これはバグでしょうか。または私は何かを欠いている?

私はあなたがdim arr()を行うと、それは、任意の大きさせずにそのことを意味するVBScript

+0

サイズを定義せずに配列を初期化して、何を達成しようとしていますか?あなたが見たように - それは不可能です。あなたは何を望んでいますか?おそらくもっと良い方法があります。 –

+0

@ JohnColeman、それは、この配列にいくつの要素が挿入されるかわからないからです。場合によっては数百または数千になることがあります –

+0

大きさがわからない場合は、内容を失うことなく配列のサイズを変更するために 'ReDim Preserve'を使います –

答えて

2

@PankajJajuはすでに基本的な質問に良い答えを与えました。あなたの意図は、必要に応じて動的に拡張することができ、配列を持っているのであれば

すると、あなたがarray list使用する場合があります:動的に拡張できることに加えて

Option Explicit 
dim arr 

Set arr = CreateObject("System.Collections.ArrayList") 
arr.add 2 

msgbox "arr: " & arr(0) 'it *does* print 2! 

を、配列リストはまた、素敵なものを持っています方法。上記のリンクは、VBScriptからそれらを使用する方法を示しています。

(また、キーワードCallを使わずにsubsを呼び出すことができますが、関数の代わりにサブ関数を使用する場合は、引数の前後に括弧を入れなくてはならないことに注意してください。msgbox)。

関連する問題