VBScriptの変数とデータ型をマスターする

VBScriptでは、変数を使ってデータを格納し、プログラムの中で利用することができます。

この記事では、VBScriptで変数を効果的に使用する方法を解説します。

変数とは

変数とは、データを一時的に格納するための「箱」のようなものです。

データは、777やおはよう、abcといった数値や文字の他に記号やその他の情報自体のことを指します。

数学では、「2x = 6」のような問題があり、答えは「x =3」となりますが、この文字「x」が変数の名前です。問題によっては、「x」には3以外の数値が入ります。

xのように変化する可能性がある値のことを「変数」と呼びます。

また、変化しない固定の値は、「定数」と呼びます。

プログラミングをする上で「変数」「定数」はとても重要です。

明確に使い分けることで可読性の向上、また同じ動作である一連の処理を一度、変数に入れ、その変数を使いまわすことで処理速度の向上やメモリの消費を抑えることにつながります。

変数を宣言する理由

変数を宣言することで、プログラムの可読性が向上し、エラーを未然に防ぐことができます。

VBScriptでは、Option Explicitステートメントを使用して変数の宣言を強制することが可能です。

Option Explicit

これにより、未宣言の変数を使用した場合にエラーが発生し、コードのデバッグが容易になります。

変数の宣言方法

VBScriptで変数を宣言するには、Dimキーワードを使用します。以下に基本的な宣言の例を示します。

Dim 変数名

変数名には任意の名前を付けることができますが、識別しやすい名前を使用することが推奨されます。また、変数名には英数字を使用でき、先頭には文字を使用する必要があります。

Dim userName
Dim userAge
Dim isMember

複数の変数を同時に宣言する

複数の変数を一度に宣言する場合は、カンマで区切って記述します。

Dim firstName, lastName, age

初期化と代入

変数を宣言した後、その変数に値を代入する必要があります。代入には=(イコール)を使用します。

変数名 = 値

以下の例では、scoreという変数を宣言し、その変数に95という値を代入しています。

Dim score
score = 95

変数のスコープ

VBScriptでは、変数のスコープ(その変数が利用可能な範囲)が重要です。変数のスコープには主に以下の2種類があります。

  • ローカル変数:特定の関数やサブルーチン内でのみ有効な変数
  • グローバル変数:スクリプト全体で有効な変数で、スクリプト内のどこからでもアクセスできる
'例: ローカル変数
Sub MyProcedure()
    Dim localVar
    localVar = "Hello"
    MsgBox localVar
End Sub
'例: グローバル変数
Dim globalVar
globalVar = "Hello"

Sub MyProcedure()
    MsgBox globalVar
End Sub

また、Dimはアクセス修飾子と呼ばれます。大切な単語なので覚えておきましょう。

データ型とは

データ型とは、プログラム上での値の種類を指します。

変数名「y」に「こんにちは」といった文字が入っている場合のデータ型は「文字列」、「100」といった整数の数値であればデータ型は「整数」となります。

VBScriptは、動的型付け言語です。

つまり、変数のデータ型を明示的に宣言する必要はありません。

変数に値を代入することで、自動的に適切なデータ型が割り当てられます。

VBAなどのVB系の言語では、データ型「Variant(バリアント)」型が登場します。

Variant型は、「変異体」という英単語でVariant型も変数に値を入れるとき、自由な値を入れることができる型です。

「動的型付け言語 ≒ Variant型」のイメージで覚えておきましょう。

変数に値を入れた後は、入れた値のデータ型になります。

例えば、変数に文字列「Hello, World」を入れたとします。すると、変数は文字列型になります。

Dim message ' 文字列型の変数を宣言
message = "Hello, World!" ' 文字列を代入
Dim number ' 数値型の変数を宣言
number = 42 ' 整数を代入

データ型には、下記のように様々な種類が存在します。

定数について

定数は、プログラム内で変更されない値を表します。

VBScriptでは、Constステートメントを使用して定数を定義します。

Const 定数名 = 値

宣言した定数に値を入れなおすことはできません。

例えば下記を実行した場合は、「不正な代入です」とエラーが表示されます。

Const FILE_PATH = ".\TEST.xlsx"

FILE_PATH = "test"

例のように大文字で記述することでパッと見で変数と定数の区別ができ、可読性の向上につながります。

変数の命名規則

変数の名前を適切に命名することで、コードの可読性を向上させることができます。

一般的な命名規則は次の通りです。

  • 変数名は英字で始める必要があります。
  • 変数名には英字、数字、アンダースコア(_)を使用できます。
  • 変数名は意味を明確にするために分かりやすく命名することが望ましいです。
Dim userName ' ユーザー名を表す変数
Dim userAge ' ユーザーの年齢を表す変数

演習問題

ここでは、VBScriptで変数を宣言し、適切に使用できるかどうかを確認するための演習問題を用意しました。

演習1

次のコードはエラーを発生させます。エラーを修正し、userNameに「Taro」という値を代入し、メッセージボックスに表示してください。

Option Explicit

userName = "Taro"
MsgBox userName
演習1 解答例
Option Explicit

Dim userName
userName = "Taro"
MsgBox userName

演習2

Dimを使用して変数を宣言し、次の情報を格納してください。次に、それらの値をメッセージボックスで表示するコードを書いてください。

  • cityNameに「Tokyo」
  • populationに9,000,000
演習2 解答例
Dim cityName, population
cityName = "Tokyo"
population = 9000000
MsgBox "City: " & cityName & vbCrLf & "Population: " & population

演習3

以下のコードで、スコープの違いにより変数がどのように動作するか確認してください。コードを修正して、globalVarとlocalVarの両方を正しく表示させるようにしてください。

Dim globalVar
globalVar = "Global"

Sub TestScope()
    Dim localVar
    localVar = "Local"
    MsgBox globalVar
    MsgBox localVar
End Sub
演習3 解答例
Dim globalVar
globalVar = "Global"

Sub TestScope()
    Dim localVar
    localVar = "Local"
    MsgBox globalVar
    MsgBox localVar
End Sub

TestScope

まとめ

VBScriptで変数を使うことで、データを格納して処理を行うことができます。

適切な宣言、初期化、命名規則を遵守し、変数を効果的に活用しましょう。