なぜ「変数の宣言」が重要なのか
VBAを書き始めたばかりの頃、変数に値を代入するだけでプログラムが動いてしまうため、「宣言」を省略していませんか? 実務において変数の宣言を怠ることは、後々のバグ調査に膨大な時間を費やす原因となります。
変数を適切に宣言し、データ型を指定することで、「数値を入れるべき場所に誤って文字列を入れてしまう」といったミスを未然に防ぎ、プログラムの安定性と実行速度を向上させることができます。
基礎知識:データ型と宣言のルール
変数は、値を入れておく「箱」です。この箱に名前をつけ、どんな種類のデータが入るかを指定するのが「型宣言」です。
主なデータ型:
・Long型(長整数型): 整数を扱う際の基本。Integer型よりも扱える範囲が広く、メモリ効率も良いため、現在のVBAでは整数ならLong型を使うのが定石です。
・String型: 文字列を格納します。
・Double型: 小数点を含む数値を扱います。
・Boolean型: True または False の判定値を扱います。
注意すべきポイント:
複数の変数を一行で宣言する場合、例えば「Dim a, b As Long」と書くと、aはVariant型(何でも入る型)になり、bだけがLong型になります。必ず「Dim a As Long, b As Long」のように、変数ごとに型を指定しましょう。
実装:Option Explicitで強制力を働かせる
最も重要な設定が、モジュールの先頭にOption Explicitと記述することです。これを書くと、宣言していない変数を使った瞬間にエラーが出るようになります。これにより、変数の「綴りミス」による予期せぬ挙動を完全に防ぐことができます。
毎回手入力するのが面倒な場合は、VBEの [ツール] > [オプション] > [編集] タブにある「変数の宣言を強制する」にチェックを入れてください。以降、新規作成するすべてのモジュールに自動挿入されます。
サンプルプログラム:正しい変数の宣言例
以下のコードは、売上の計算を行う実務的な例です。
Option Explicit
Sub CalculateSales()
‘ 変数の宣言:適切な型を指定する
Dim unitPrice As Long ‘ 単価
Dim quantity As Long ‘ 数量
Dim total As Long ‘ 合計金額
Dim itemName As String ‘ 商品名
‘ 値の代入
itemName = “事務用ボールペン”
unitPrice = 150
quantity = 10
‘ 計算処理
total = unitPrice quantity
‘ 結果の出力
MsgBox itemName & “の合計金額は” & total & “円です。”
‘ もしここで “total = “ABC”” のように文字列を入れようとすると、
‘ コンパイルエラーが発生し、誤ったデータ混入を防ぐことができます。
End Sub
応用・注意点:現場での運用
現場でよくある失敗は、「とりあえずVariant型(型指定なし)で済ませてしまうこと」です。Variant型は便利ですが、メモリを多く消費し、思わぬ型変換エラーを引き起こすリスクがあります。
また、日付を扱う場合は「Date型」、金額の計算で誤差を極力避けたい場合は「Currency型」を使うなど、用途に応じて適切な型を選ぶ癖をつけましょう。最初は面倒に感じるかもしれませんが、「宣言がしっかり書かれたコードは、自分や他人が読み返した時に圧倒的に理解しやすい」というメリットがあります。プロフェッショナルなVBA開発者を目指すなら、今日から「Option Explicit」を必須ルールにしましょう。
