VBAテクニック集 VBA一覧 変数の代入 文法・構文

【VBA】変数宣言とは?基本構文・データ型・スコープの考え方まで徹底解説!

VBA(Visual Basic for Applications)でExcelの自動化を行う際、最も基本でありながら、プログラム全体の安定性を大きく左右するのが「変数宣言」です。
「とりあえず動いたから良い」と思って変数を曖昧に扱っていると、後々バグや修正の原因になってしまうことも少なくありません。

この記事では、「vba 変数宣言」という検索キーワードで情報を探している方に向けて、以下の内容を網羅的に解説します。

✅ 変数とは何か?宣言の意味とは?
✅ VBAでの変数宣言の基本構文
✅ データ型の種類と使い分け
✅ スコープ(有効範囲)と寿命の考え方
✅ よくあるミスとその対策

初心者の方でも理解できるように、具体例を交えて丁寧に解説しますので、ぜひ参考にしてください。

✅ 変数とは?なぜ宣言が必要なのか?

変数とは、プログラム内で一時的に値を保存しておく「入れ物」のようなものです。
たとえば、次のように名前や点数などを一時的に記憶して処理に使うことができます。

Dim name As String
name = "田中"

VBAでは変数を使う際に、あらかじめ「宣言」しておくのが基本の書き方です。宣言とは、その変数がどんな名前で、どんな種類のデータを扱うかをプログラムに伝える作業です。


【VBA】変数に値が代入されない原因と対処法|よくあるミスとデバッグ方法を徹底解説

✅ VBAでの変数宣言の基本構文

変数を宣言するには、Dimステートメントを使います。

Dim 変数名 As データ型

📌 例:

Dim userName As String      ' 文字列型
Dim age As Integer          ' 整数型
Dim price As Double         ' 小数点ありの数値型
Dim birthday As Date        ' 日付型

このように、Dimで宣言することで、その変数がどのようなデータを扱うのかを明示的に定義できます


✅ よく使うデータ型とその用途

データ型用途
String文字列(名前・住所など)"田中"
Integer整数(-32,768~32,767)25
Long大きい整数(~21億程度)1000000
Double小数を含む数値99.5
Boolean真偽(True / False)True
Date日付や時刻#2025/07/27#
Variantすべてを扱える汎用型文字列・数値・日付すべて可

ポイント:
初心者のうちは String, Integer, Double, Date, Boolean あたりを使い分けられるようになれば十分です。

【VBA】変数のデータ型変換(型変換)の方法と注意点


✅ 変数を複数まとめて宣言する方法

複数の変数を同時に宣言することもできます。

Dim lastName As String, firstName As String
Dim score1 As Integer, score2 As Integer

データ型を省略せずに1つずつ指定するのがベストプラクティスです。
以下のように書くと、num1しかIntegerにならない点に注意が必要です。

Dim num1, num2 As Integer  ' → num1はVariant型になる

【VBA】変数をまとめて宣言する方法

✅ Option Explicitで宣言漏れを防ぐ

VBAでは変数を宣言せずに使用することもできますが、スペルミスによるバグの温床になります。

そこでおすすめなのが Option Explicit の使用です。

Option Explicit

この1文をモジュールの先頭に記述しておくと、すべての変数を明示的に宣言しないとエラーになるため、スペルミスや宣言忘れを未然に防げます。

VBE(Visual Basic Editor)の設定で自動的に有効にすることも可能です:

  1. メニューの「ツール」→「オプション」
  2. 「変数の宣言を強制する」にチェック

✅ スコープと寿命|変数の有効範囲と生存期間を理解しよう

・スコープとは?

変数がどこまでの範囲で使えるかを指します。主に以下の3種類があります。

宣言の場所スコープ宣言方法
プロシージャ内ローカル変数(そのSub内のみ)Dim
モジュールの先頭モジュール変数DimまたはPrivate
全プロジェクト共通グローバル変数Public

・ 例:プロシージャ内の変数

Sub Sample1()
    Dim message As String
    message = "こんにちは"
    MsgBox message
End Sub

この messageSample1 の中でしか使えません。


・ 例:モジュールレベルの変数

Private message As String  ' モジュールの先頭に記述

Sub Sample1()
    message = "こんにちは"
End Sub

Sub Sample2()
    MsgBox message  ' Sample1の結果を引き継げる
End Sub

・ 例:プロジェクト全体で使う変数

Public message As String  ' 標準モジュールの先頭に記述

このようにしておくと、どのモジュールからでも同じ変数を参照・変更できます。


■ 初心者がやりがちな変数宣言ミスと対処法

❌ データ型を指定しない(Variantになる)

Dim name  ' → Variant型として扱われる

Variantは便利ですが、型のミスマッチや予期せぬ動作の原因になりやすいです。
なるべく明示的にデータ型を指定しましょう。


❌ 同じ名前の変数を複数定義してしまう

同じ名前の変数が複数のスコープに存在すると、意図しない変数が使われてしまうことがあります。
コードの可読性・保守性のためにも、変数名はわかりやすく、一意にしましょう。


❌ 不要なグローバル変数の乱用

全体で使えるからといって、Public変数を多用すると、予期せぬタイミングで値が書き換わるリスクがあります。
必要なスコープで限定して使うように心がけましょう。


■ まとめ|変数宣言をマスターすればVBAの土台が固まる!

変数はVBAのすべての処理の基本です。正しい宣言とスコープの管理ができるようになれば、より大規模で保守性の高いマクロの作成が可能になります。

最後にポイントを整理します:

  • Dim 変数名 As データ型 で明示的に宣言
  • よく使うデータ型(String, Integer, Double, Date, Boolean)を把握
  • Option Explicit を使って宣言漏れを防止
  • スコープ(ローカル/モジュール/グローバル)を意識する
  • 型の曖昧さや名前の重複に注意する

これらを意識するだけで、バグの少ない、読みやすいVBAコードが書けるようになります。初学者の方も、今のうちから「変数宣言」にしっかり取り組んでおくと、将来的に大きな差になりますよ。

-VBAテクニック集, VBA一覧, 変数の代入, 文法・構文