VBScriptでは、変数を使ってデータを格納し、プログラムの中で利用することができます。
この記事では、VBScriptで変数を効果的に使用する方法を解説します。
変数とは
変数とは、コンピューターにデータを一時的に記憶しておくための器のことです。
データは、777やおはよう、abcといった数値や文字の他に記号やその他の情報自体のことを指します。
数学では、「2x = 6」のような問題があり、答えは「x =3」となりますが、この文字「x」が変数の名前です。問題によっては、「x」には3以外の数値が入ります。
このように変化する可能性がある値のことを「変数」と呼びます。
プログラミングでも「x」のような変数が使用されます。
また、変化しない固定の値は、「定数」と呼びます。
プログラミングをする上で「変数」「定数」はとても重要です。
明確に使い分けることで可読性の向上、また同じ動作である一連の処理を一度、変数に入れ、その変数を使いまわすことで処理速度の向上やメモリの消費を抑えることにつながります。
変数の宣言と初期化
変数を使用する前に、Dimステートメントを使用して変数を宣言し、必要に応じて初期化します。
Dim x ' 変数xを宣言
x = 10 ' 変数xを初期化
データ型とは
データ型とは、プログラム上での値の種類を指します。
変数名「y」に「こんにちは」といった文字が入っている場合のデータ型は「文字列」、「100」といった整数の数値であればデータ型は「整数」となります。
VBScriptは、動的型付け言語です。
つまり、変数のデータ型を明示的に宣言する必要はありません。
変数に値を代入することで、自動的に適切なデータ型が割り当てられます。
VBAなどのVB系の言語では、データ型「Variant(バリアント)」型が登場します。
Variant型は、「変異体」という英単語でVariant型も変数に値を入れるとき、自由な値を入れることができる型です。
「動的型付け言語 ≒ Variant型」のイメージで覚えておきましょう。
変数に値を入れた後は、入れた値のデータ型になります。
例えば、変数に文字列「Hello, World」を入れたとします。すると、変数は文字列型になります。
Dim message ' 文字列型の変数を宣言
message = "Hello, World!" ' 文字列を代入
Dim number ' 数値型の変数を宣言
number = 42 ' 整数を代入
データ型には、下記のように様々な種類が存在します。
データ型 | 値の例 | 値の範囲 |
---|---|---|
整数 | 1000 | – |
文字列 | おはよう | – |
バイト | 255 | 0 から 255 |
ブーリアン | True | TrueまたはFalse |
日付 | 2024/12/31 | 0001 年 1 月 1 日 0:00:00 (午前 0 時) から 9999 年 12 月 31 日午後 11:59:59 |
オブジェクト | – | Excelなどのアプリやクラスなどを参照する値 |
変数のスコープ
変数のスコープは、その変数が利用可能な範囲を示します。
変数を宣言する時にDimステートメントを使用するとご紹介してきましたが、Dimは、アクセス修飾子と呼ばれます。
Dim以外に「Public」があります。
「Private」も存在しますが、使用することは基本ないので省略します。
宣言された変数には、次のようなスコープがあります。
- ローカル変数:特定の関数やサブルーチン内でのみ利用可能な変数
- グローバル変数:スクリプト全体で利用可能な変数
Dim globalVariable 'グローバル変数の宣言
Public globalVariable2 'グローバル変数の宣言
Sub MySub
Dim localVariable 'ローカル変数の宣言
' ここでglobalVariableやlocalVariableを利用できます
End Sub
上記コードのグローバル変数の宣言を見ると、「あれDimはどこで宣言してもいいのか」と疑問に思います。
VBScriptは、ファイル間で変数を使用することができないため、Dimだけ使用するのでも問題はありません。
しかし、明示的に使い分けることで可読性の向上や想定外のアクセスを未然に防ぐ(他の言語の場合)ことができます。
変数の宣言を強制にする
これまで変数の宣言について解説してきましたが、VBScriptでは、変数の宣言を行わなくても変数を使用することができます。
以下の2つの例を実際に確認して見てください。
宣言をしてもしなくても、どちらともメッセージボックス内に「太郎」と出力されます。
'変数の宣言
Dim taro
'値の代入
taro = "太郎"
'出力する
MsgBox taro
'値の代入
taro = "太郎"
'出力する
MsgBox taro
そもそもvbsファイル内に記述されたプログラムは、実行時に上から順に構文など誤りが無いかチェックされ、問題なければ上から処理され、誤りがあればエラーメッセージが表示されます。
上からチェックする際、変数だと自動で認識してくれるため、変数を宣言せずに使用することができます。
しかし、下記コード「Option Explicit」を記述することで変数の宣言を強制にすることができます。
'変数の宣言を強制にする
Option Explicit
下記コードをコピーペイストして、試してみてください。「Option Explicit」を記述する前は問題なく実行できていた処理が「宣言されていない」とエラーメッセージが表示されます。
'変数の宣言を強制にする
Option Explicit
'値の代入
taro = "太郎"
'出力する
MsgBox taro
宣言をしなくてはいけないプログラミング言語もあります。
どの行から変数を使い始めているのかがわかり、可読性につながったりするので、宣言をすることに慣れておきましょう。
定数について
定数は、プログラム内で変更されない値を表します。
VBScriptでは、Constステートメントを使用して定数を定義します。
Const [定数名] = [値]
宣言した定数に値を入れなおすことはできません。
例えば下記を実行した場合は、「不正な代入です」とエラーが表示されます。
Const FILE_PATH = ".\TEST.xlsx"
FILE_PATH = "test"
また、定数名はすべて大文字で宣言することが一般的です。
大文字で記述して置くことでパッと見で変数と定数の区別ができ、可読性の向上につながります。
変数の命名規則
変数の名前を適切に命名することで、コードの可読性を向上させることができます。
一般的な命名規則は次の通りです。
- 変数名は英字で始める必要があります。
- 変数名には英字、数字、アンダースコア(_)を使用できます。
- 変数名は意味を明確にするために分かりやすく命名することが望ましいです。
Dim userName ' ユーザー名を表す変数
Dim userAge ' ユーザーの年齢を表す変数
まとめ
VBScriptで変数を使うことで、データを格納して処理を行うことができます。
適切な宣言、初期化、命名規則を遵守し、変数を効果的に活用しましょう。