Microsoft® Visual Basic® Scripting Edition
VBScript の変数
目次  |
前ページ  | 次ページ  |

 

変数とは ?
変数は、スクリプトの実行中に変更するプログラム情報を保存しているコンピュータのメモリ上の位置を参照できる便利なプレースホルダです。たとえば、ある Web ページ上のオブジェクトがクリックされた回数を書き込む ClickCount プロシージャを呼び出す変数を作成するとします。変数がコンピュータのメモリ上のどこに配置されているかは、重要ではありません。大切なことは、値を参照したり、値を変更したりするときには、値の名前のみを参照すればよいことです。Microsoft Visual Basic Scripting Edition (以下 VBScript) の変数のデータ型は、常にバリアント型 (Variant) です。

変数の宣言
スクリプトの中では Dim ステートメント、Public ステートメント、および Private ステートメントを使って、明示的に変数を宣言します。次に例を示します。


 Dim DegreesFahrenheit

複数の変数は、カンマで区切って宣言します。次に例を示します。


 Dim Top, Bottom, Left, Right

スクリプトの中の任意の位置で変数名を使えば、簡単に暗黙的な変数として変数を宣言することができます。ただ、この方法は一般的にはよい習慣ではありません。なぜなら記述ミスをした場合、スクリプトの実行時に予期せぬ結果を引き起こす場合があるからです。こうした理由からすべての変数を明示的に宣言する必要があるときには、Option Explicit ステートメントが役立ちます。Option Explicit ステートメントは、スクリプト内の 1 行目のステートメントに記述してください。

名前付けの制限
変数名は VBScript の標準的な名前付けの規則に従ってください。変数名は、次に示す条件を満たす必要があります。

変数の適用範囲と有効期間
一般にプロシージャ内部で変数が宣言された場合、その変数は宣言されたプロシージャ内でのみ有効です。この変数はローカルな適用範囲 (スコープ) を持ち、"プロシージャ レベル変数" または "ローカル変数" と呼びます。しかし、時には同じスクリプト内のすべてのプロシージャで有効な変数となるように、より広い適用範囲を持つ変数が必要な場合もあります。プロシージャの外部で変数を宣言すれば、そのスクリプト内のすべてのプロシージャに対して適用されます。スクリプト レベルでの適用範囲を持っているので、このような変数を "スクリプト レベル変数" と呼びます。

変数が有効な時間を "有効期間" といいます。スクリプト レベル 変数の有効期間は、スクリプトで宣言されてからスクリプトの実行が終了するまでです。一方、ローカル変数の適用範囲は、変数宣言ステートメントがプロシージャを開始したときが始まりで、プロシージャが終了したときが終わりになります。変数は宣言されたプロシージャ内でのみ認識されるため、複数の異なるプロシージャ内では、同名のローカル変数を使うことができます。

変数の適用範囲は、変数を宣言した位置で決まります。スクリプト レベルでは、変数の有効期間は常に同じです。スクリプトが実行している間、変数は有効です。プロシージャ レベルでは、プロシージャ内にいる間だけ変数は有効です。プロシージャが終了すると、変数は破棄されます。

変数に値を代入する
次のような式を作成して変数に値を代入します。変数は式の左側に置き、変数に割り当てたい値を右側に置きます。次に例を示します。


 B = 200

スカラと配列
多くの場合は、宣言した変数に 1 つの値を割り当てることになります。単一の値を持つ変数を "スカラ変数" といいます。また、1 つの変数に 1 つ以上の関連する値を代入できると便利です。さらに連続する値を持てる変数を作成できます。これを "配列変数" と呼びます。配列変数は、スカラ変数とほとんど同じ方法で宣言されます。違いは、配列変数の宣言に変数名に続くかっこが使われることです。次の例では、11 個の要素を持つ 1 次元配列が宣言されています。


 Dim A(10)

かっこ内に示された数が 10 であるにもかかわらず、VBScript のすべての配列は、0 から起算します。したがって、この配列は、実際には 11 個の要素を持っています。0 起算配列では、配列の要素数は、常にかっこ内の数に 1 を足した値になります。この種類の配列を "固定サイズ配列" と呼びます。

インデックスを持った配列を使って、配列の各要素にデータを割り当てます。0 で始まり、10 で終わるデータは次のように配列の要素に割り当てることができます。


 A(0) = 256
 A(1) = 324
 A(2) = 100
 . . .
 A(10) = 55

同様にインデックスを持った任意の配列から必要とするある配列要素にデータを渡すことができます。次に例を示します。


 . . . 
 SomeVariable = A(8)  
 . . . 

配列は、1 次元に制限されてはいません。3 次元、4 次元を超えてくると、理解が困難になってきますが、60 次元まで宣言できます。複数の次元は、かっこ内の配列サイズ数をカンマで区切って宣言します。次の例では、MyTable 変数は、6 行と 11 列からなる 2 次元配列です。


 Dim MyTable(5, 10)

2 次元配列では、最初の数字が行数で、2 番目が列数を表します。

VBScript を実行中にサイズを変更する配列を宣言することもできます。これを "動的配列" と呼びます。配列は、ほかの配列を持った Dim ステートメントまたは ReDim ステートメントを使って最初にプロシージャで宣言します。違いは、かっこの中に配置するサイズと次元数がないことです。次に例を示します。


 Dim MyArray()
 ReDim AnotherArray()

動的変数を使うには、すぐあとに ReDim ステートメントを使って次元数とサイズを決めなければなりません。次の例では、ReDim ステートメントは、動的配列の初期サイズに 25 を設定しています。続く ReDim ステートメントで配列のサイズを 30 に変更しています。サイズ変更を行うときに配列の要素を保存するには Preserve キーワードを使います。


 ReDim MyArray(25)
 . . . 
 ReDim Preserve MyArray(30)

動的配列でサイズを変えられる回数に制限はありません。ただし、配列のサイズを現在より小さくすると、要素に格納されている値を失うことになるので注意してください。


© 1997 Microsoft Corporation.