VBA(Visual Basic for Applications)でプログラムを記述する際、必ず登場するのが「変数」です。中でも複数の変数に一度に値を代入したい場面はよくあります。
例えば「氏名・部署・得点」を一括でセットしたいときや、「ループ内で複数の初期値を一気に入れたい」ときなど、まとめて代入できればコードがスッキリし、保守性も上がります。
この記事では、「vba 変数 代入 まとめて」というキーワードで検索された方に向けて、以下のポイントを詳しく解説します。
✅ VBAで変数をまとめて宣言・代入する基本構文
✅ 同じ値を複数の変数に同時に代入する方法
✅ 配列やType(ユーザー定義型)を使った応用例
✅ 実務での便利な使用パターンと注意点
✅ 初心者が間違えやすい書き方とその対策
目次
✅ 変数をまとめて宣言&代入する基本構文
まず、VBAで複数の変数を一度に「宣言」する方法は、次のようにカンマで区切って記述します。
Dim name As String, department As String, score As Integer
では「代入」をまとめて行うにはどうするのでしょうか?以下のように、1行で複数の変数に代入することは可能です。
name = "田中": department = "営業部": score = 85
このように、コロン(:)で複数のステートメントを連結することで、1行で複数代入ができます。
✅ 同じ値を複数の変数に一括で代入する方法
よくあるのが「複数の変数に同じ値を代入したい」ケースです。
Dim x As Integer, y As Integer, z As Integer
x = y = z = 0 ' ← これはVBAではNG
❌ 上記はエラーや意図しない結果になる
VBAは「代入の連鎖」ができないため、以下のように個別に代入するか、
x = 0: y = 0: z = 0
あるいは関数で共通値を返す形にしてまとめることができます。
✅ 配列を使ってまとめて代入するテクニック
変数が多数ある場合は、配列を使ってまとめて値を管理すると効率的です。
Dim arr(1 To 3) As Variant
arr(1) = "田中"
arr(2) = "営業部"
arr(3) = 85
さらに、Array関数を使えば一括でまとめて代入することも可能です。
Dim arr As Variant
arr = Array("田中", "営業部", 85)
この方法は、以下のように個別の値にアクセスできます:
Debug.Print arr(0) ' 田中
Debug.Print arr(1) ' 営業部
Debug.Print arr(2) ' 85
✅ ユーザー定義型(Type)で構造的にまとめる
変数が固定されていて、それぞれの意味も明確な場合は、ユーザー定義型(Type)を使ってひとまとまりに管理することもできます。
Type PersonInfo
name As String
department As String
score As Integer
End Type
これを使った代入例:
Dim person As PersonInfo
person.name = "田中"
person.department = "営業部"
person.score = 85
これにより、「人の情報はpersonというひとつのオブジェクトで扱う」ことが可能になります。業務での構造化データ管理に非常に有効です。
【VBA】Function で複数の戻り値を返す方法と活用例
■ 実務でよくあるケース:セルの値をまとめて変数に代入
以下のように、ワークシート上の連続したセル範囲の値を一括で取得し、配列として変数に代入する方法もあります。
Dim info As Variant
info = Range("A1:C1").Value
このとき、配列は二次元になるので注意が必要です。
MsgBox info(1, 1) ' A1の値
MsgBox info(1, 2) ' B1の値
MsgBox info(1, 3) ' C1の値
この方法は、入力データを一括で取り込んで変数に渡すときに便利です。
✅ ループで変数に値を順番に入れる方法
変数名を固定できない場合は、配列とループを組み合わせます。
Dim arr(1 To 3) As Variant
Dim i As Integer
For i = 1 To 3
arr(i) = Cells(1, i).Value
Next i
このようにすると、「1行目のA~C列までの値を、順に配列に代入する」ことができます。
■ オブジェクト変数もまとめて代入可能
WorkbookやWorksheetなどのオブジェクトも、まとめて変数に代入できます。
Dim wb As Workbook, ws As Worksheet
Set wb = ThisWorkbook: Set ws = wb.Sheets("データ")
オブジェクト変数の代入には Set キーワードが必要です。これも複数行を : で繋ぐことで簡潔に書けます。
■ よくあるミスと注意点
⚠ x = y = 0 の書き方は使えない
VBAは「代入の連鎖」がサポートされていないため、他言語のような書き方は誤動作の原因になります。
' 例)意図せずTrue/Falseになる
x = (y = 0) ' yが0ならTrue(-1)、xに代入されるのは-1
⚠ 配列の添字は0開始が基本(Array関数)
Array関数で定義された配列は arr(0) から始まります。Option Base 1 を指定すれば1開始になりますが、混乱の元になるため明示的に扱うのがおすすめです。
■ まとめ|変数のまとめて代入は「効率化」の第一歩
変数をまとめて代入することで、コードの可読性と保守性が大きく向上します。VBAでは直接「一括代入」する文法は少ないですが、以下のような方法を駆使すれば実現可能です。
- コロン(:)で複数代入を1行で記述
Array関数や配列での一括管理Type(ユーザー定義型)で構造的に代入Setによるオブジェクト代入- 配列+ループでセルからの値取得
特に実務では、「変数に何をどう割り当てたか」が後々のバグの原因になることも多いため、整理された代入構文は非常に役立ちます。