怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

VBScript - 変数を宣言する | Dim ステートメント

とある内容をメモリに保存しておきたい場合に変数を使う。
たとえば変数には、何かを計算した結果やユーザーが入力した内容を入れておくことができる。

変数の宣言

VBScript では Dim ステートメントで変数を宣言する。
varName の部分が変数名である。命名規則に従うこと。

Dim varName

複数宣言するときは次のようにカンマで区切る。

Dim varNameA, varNameB

変数のデータ型はバリアント型(Variant)、初期値は Empty となる。
(Empty は変数が初期化されていないことを示すキーワード)

暗黙的な変数宣言を避ける

VBScript では、スクリプト内で変数名を書くと自動で変数が作られる。
これを暗黙的な変数宣言と言う。

しかし、暗黙的な変数宣言は避けた方が良い。
変数名の入力ミスに気付けなくなるからである。
たとえば変数 var を間違えて bar と入力した場合、bar という変数が作られてしまう。

Option Explicit ステートメントを使うと、暗黙的な変数宣言を禁止できる。
(暗黙的な変数宣言を禁止=明示的な変数宣言を強制)

明示的な変数宣言を強制するには、Option Explicit をスクリプト内のどのステートメントよりも前に記述する。

Option Explicit
'宣言してから使うのはOK
Dim var
var = 10
'宣言しないのはNG。エラーになる(実行時エラー: この変数は宣言されていません。)
bar = 10

変数の命名規則

変数名は以下の規則に従って付ける。

  • 先頭文字はアルファベットであること
  • ピリオドを使わないこと
  • 255文字(半角の場合)以内であること
  • 変数の適用範囲内で同じ名前の変数を複数宣言しないこと

変数の適用範囲

変数の適用範囲は、変数を宣言した位置で決まる。
適用範囲には次の2つがある。

プロシージャレベルはプロシージャ内部で宣言した変数に適用される。
その変数を宣言したプロシージャ内でのみ有効となる。

スクリプトレベルはプロシージャ外部で宣言した変数に適用される。
スクリプト全体で有効となる。

変数の有効期間

プロシージャレベルとスクリプトレベルで変数の有効期間が異なる。

プロシージャレベルはプロシージャ内にいる間のみ有効。
変数を宣言したプロシージャを開始したときに始まり、プロシージャが終了したときに終わる。

プロシージャの途中で変数を宣言していても、プロシージャの開始時から有効になるので留意する。

スクリプトレベルは、スクリプトで宣言されてからスクリプトが終了するまでの間、有効となる。