プログラミングを勉強しはじめたとき、「変数」という言葉に出会いました。
正直、最初は「へんすう…? なんだか急に理系っぽくなってきたぞ…」という戸惑いがありましたね。
でも、変数ってじつはとっても便利な存在。
マクロを使いこなすうえで、避けて通れないキーワードなんです。
この記事では、「変数ってなに?」という超基本から、実際の使い方まで、プログラミング初心者の目線でていねいに解説していきます。
「マクロをもっと自由に動かしてみたい」「コードの意味がわかるようになりたい」という方は、ぜひ最後まで読んでみてくださいね!
そもそも変数ってなに?初心者にもわかるやさしい例え
プログラミングを始めると、必ず出てくるキーワード「変数」。
でも、いきなり「データを格納するメモリ領域」とか言われても、「う、難しそう…!」となりますよね。
そこでまずは、変数のイメージをつかむことから始めましょう!
実は変数って、身近なものにたとえると意外とカンタンに理解できるんです。
変数は「名札」みたいなもの
たとえば、学校のロッカーを想像してください。
ロッカーには、1つずつ番号がついているので、「この番号のロッカーには〇〇が入ってるよ」と管理できますよね。
変数もこれと同じで、プログラムの中でデータを入れておく“ロッカー”のようなものです。
しかも、そのロッカーには名前(変数名)をつけられるので、「〇〇というロッカーには△△が入ってる」と簡単に呼び出すことができます。
Dim studentName As String
studentName = "Taro"
これは、「studentNameという変数のロッカーに、Taroという名前を入れた」という意味になります。
変数は「付箋メモ」のように使える
もうひとつ、変数を「付箋メモ」にたとえてみましょう。
「今日の目標」と書かれた付箋があったとして、最初は「本を読む」と書かれていたとします。
でも、途中で「やっぱり映画を見る」に変更したくなったら、内容を書き換えますよね?
変数もこれと同じで、いったん入れた値をあとで書き換えられるのが特徴です。
Dim todayTask As String
todayTask = "本を読む"
todayTask = "映画を見る"
こうすると、todayTask という変数の値が 「映画を見る」 に変わります。
つまり、プログラムの途中でデータを更新できるのが変数の大きなメリットなんです。
なぜマクロに変数が必要なの?
変数を使わなくても、VBAでは直接データを書き込むことができます。
でも、もし 何回も同じデータを使う 場面があったらどうでしょう?
例えば、「A1セルに“おはよう”と表示するコード」と、「B1セルに“おはよう”と表示するコード」を書くとします。
Range("A1").Value = "おはよう"
Range("B1").Value = "おはよう"
このままだと、もし「“おはよう”を“こんにちは”に変えたい」と思ったとき、全てのコードを書き換えなきゃいけません。
でも、変数を使えば、1カ所の値を変更するだけで済むんです。
Dim greeting As String
greeting = "おはよう"
Range("A1").Value = greeting
Range("B1").Value = greeting
この書き方なら、greeting = “こんにちは” に変更するだけで、A1もB1もまとめて変更できるので便利ですよね!
初心者向けのアドバイス
- 変数は「ロッカー」や「付箋メモ」みたいなもの、と覚えよう!
- 一度決めた値を あとから変更できるのが変数の強み
- 変数を使うと、コードがシンプルになり、修正もラクになる
ここまでで、「変数ってなんとなくイメージがつかめたかも?」と思えてきたならバッチリです。
次の章では 実際にVBAコードを書いて、変数を宣言&代入してみる ステップに進んでいきますよ!
VBAにおける変数の使い方を学ぼう
「変数のイメージはつかめたけど、実際のコードではどう使うの?」
この章では、VBAで変数を扱う基本のステップを、はじめての方でも迷わず進められるように解説していきます。
① 変数の宣言(Dim の使い方)
変数を使うためには、「この変数を使いますよ!」という宣言が必要です。
VBAでは「Dim(ディム)」というキーワードを使って、変数を宣言します。
例えば、変数 userName を作る場合:
Dim userName As String
これで、「userName という名前の変数を作りました!」という意味になります。
この時点では、中身(値)はまだ何も入っていません。
② 変数に値を入れる(代入のしくみ)
変数を作ったら、実際に値を入れてみましょう!
値を代入するには、以下のように書きます。
userName = "Taro"
これで、userName の中に “Taro” という文字列が入ったことになります。
イメージとしては、「userName というラベルのついた箱に “Taro” というデータを入れた」感じです。
③ 変数を使ってメッセージを表示してみよう
せっかく値を入れたので、メッセージボックスで表示してみましょう。
MsgBox "こんにちは、" & userName & "さん!"
このコードを実行すると、こんな感じで表示されます👇
こんにちは、Taroさん!
変数を使うことで、毎回書き換えずに、データだけ変更して使い回しできるようになります!
④ 変数は「値を変更できる」から便利!
変数のすごいところは、あとから値を変えられることです。
例えば、以下のようにすると…
Dim todayTask As String
todayTask = "本を読む"
MsgBox "今日の目標:" & todayTask
todayTask = "映画を見る"
MsgBox "やっぱり変更!今日の目標:" & todayTask
実行すると、こんなメッセージが表示されます。
「今日の目標:本を読む」
「やっぱり変更!今日の目標:映画を見る」
変数を使えば、同じコードを何度も書かなくても、データだけ入れ替えて再利用できるんですね!
初心者向けのアドバイス
- 変数を使うと、コードをすっきりまとめられる!
- データをまとめて管理できるから、修正もラクラク!
- 値の変更が自由にできるから、柔軟なマクロ作成が可能!
ここまでで、「変数を作って、値を入れて、使う」基本はバッチリです。
次の章では、「変数の種類(型)」について解説していきます。 「文字と数字はどう違うの?」「どの型を使えばいい?」そんな疑問に答えますよ!
変数の型と使い分け|文字・数値・日付の違いとは?
前章では、変数を作って値を入れる基本を学びましたね。
でも、実は変数には「型」があって、どんなデータを入れるのかによって適切な型を選ぶ必要があるんです。
「型ってなに?」というところから、初心者向けにやさしく解説していきます!
① 変数の型とは?
変数は「データを入れる箱」でしたね。
でも、この箱には、「この箱には〇〇しか入れちゃダメ!」というルールがある場合があります。
たとえば:
- 「りんご用の箱」 には、りんごしか入れられない
- 「本用の箱」 には、本しか入れられない
変数もこれと同じで、「文字を入れる箱」「数字を入れる箱」「日付を入れる箱」など、データの種類に合わせた箱(型)を選ぶ必要があります。
② VBAでよく使う基本の変数型
VBAでは、いろんな種類のデータを扱います。
以下に、初心者がまず押さえておくべき代表的な型をまとめました。
型名 | 何を入れる? | 例 |
---|---|---|
String | 文字(テキスト) | “Hello” 、”Taro”、 “りんご” |
Integer | 整数(小さい数字) | 5、 100、 -3 |
Long | 整数(大きな数) | 1000000、 -500000 |
Single | 小数(少しの精度) | 3.14、 -0.5 |
Double | 小数(高精度) | 3.1415926535 |
Boolean | 「はい/いいえ」 | True、False |
Date | 日付と時刻 | 2025/06/18 12:30:00 |
ポイント
- 文字なら String
- 数字なら Integer or Long
- 小数なら Single or Double
- 日時を扱うなら Date
- はい/いいえは Boolean
③ 型を間違えたらどうなる?よくあるエラー
もし型を間違えてしまうと、こんなエラーが出ることがあります。
エラー例:「型が一致しません」
例えば、数字を扱いたいのに String型(文字専用の変数) に入れようとすると…
Dim age As String
age = 30 ' ← String型に数値を入れた!エラーの原因
➡ 対策: ちゃんと Integer型 にしておく
Dim age As Integer
age = 30 ' OK!
また、日付を扱うときに String型 にしてしまうと、計算ができなくなります。
Dim birthday As String
birthday = "2025/06/18" ' ← Stringだと日付計算ができない!
➡ 対策: ちゃんと Date型 にしておく
Dim birthday As Date
birthday = #6/18/2025# ' OK!(※日付は `#` で囲む)
型を適切に使うことで、エラーを防ぎながらスムーズに処理が進むので、覚えておくと安心ですね!
④ どの型を選べばいい?型選びのコツ
「どの型を使うべきかわからない…」となることもありますよね。
簡単な目安として、以下のルールを参考にしてみてください!
- 文字を扱うなら → String
- 整数を扱うなら → Integer(小さい数) or Long(大きい数)
- 小数を使うなら → Single or Double(精度を気にするなら Double)
- 日付なら → Date
- 「はい/いいえ」の条件なら → Boolean
どの型を使うか迷ったら、まずは「文字?数字?日付?」と整理するのがポイント!
初心者向けのアドバイス
- 最初は String(文字)と Integer(整数)だけ覚えればOK!
- 型を間違えると「型が一致しません」エラーになるので注意!
- 日付計算をしたい場合は Date 型を使おう!
ここまでで、変数の型についてしっかり理解できたと思います!
次の章では、実際に変数を使って 「マクロをもっと自由にする」 実践編に進みますよ。
変数を使ってマクロをもっと自由にしてみよう!
ここまでで、「変数とは何か」「どんな型があるのか」を学びましたね。
ではいよいよ、変数を使ってマクロをもっと自由に動かせるようにしていきましょう!
① 変数を使わないマクロ vs 変数を使ったマクロ
まずは、変数を使わないマクロの例から見てみます。
以下のコードは、セルに「Hello!」と表示する単純なものです。
Range("A1").Value = "Hello!"
Range("B1").Value = "Hello!"
Range("C1").Value = "Hello!"
このコード、もし「Hello!」を「こんにちは」に変更したくなったら、すべての行を修正しないといけません…。 これ、ちょっと面倒ですよね?
でも、変数を使えば一気にスッキリします!
Dim message As String
message = "Hello!"
Range("A1").Value = message
Range("B1").Value = message
Range("C1").Value = message
変更がラクに!
もし「Hello!」を「こんにちは」に変えたい場合、変数 message の値を変えるだけでOK。
message = "こんにちは"
これで、3つのセルすべてに「こんにちは」を反映できます!
変数を使うことで、マクロのメンテナンスがずっと簡単になるんですね。
② 変数を使って合計を計算するマクロ
次に、変数を活用して「合計を計算するマクロ」を作ってみましょう。
例えば、A1〜A3セルに入っている数値を合計して、A4セルに表示するマクロです。
Dim total As Integer
total = Range("A1").Value + Range("A2").Value + Range("A3").Value
Range("A4").Value = total
何が便利?
- total という変数を使うことで、計算をシンプルにまとめられる
- 新しくセルを追加したいときも、変数を編集するだけでOK
- コードがスッキリして読みやすい
③ 変数を使って「名前入りメッセージ」を表示するマクロ
最後に、ユーザーの名前を入力して、メッセージを表示するマクロです。
たとえば、入力した名前をもとに「〇〇さん、ようこそ!」というメッセージを出すプログラムを作ります。
Dim userName As String
userName = Range("A1").Value ' A1セルに入力された名前を取得
MsgBox "こんにちは、" & userName & "さん!"
A1セルに「Taro」と入力してからマクロを実行すると…
こんにちは、Taroさん!
このように、変数を使えば「入力した値を取得して動的に変更できる」ようになります!
簡単な処理ですが、変数を使うとマクロがより“柔軟”に動かせることが実感できるはずです。
初心者向けのアドバイス
- 変数を使うと、コードの変更がラクになる!
- 数値の計算や、入力値を活用する処理にピッタリ!
- 「固定の値」ではなく「変動する値」を扱いたいときに大活躍!
変数を使うことで、マクロがずっと自由でスマートになりましたね!
次の章では、「変数を使ったマクロでよくある疑問」や「初心者がつまずきがちなポイント」を整理して解説します。
初心者がつまずきやすいポイントQ&A
変数の基本を学び、「よし、使ってみよう!」とコードを書いてみると…
「あれ?なんかエラー出た?」 「どうして値が変わらないの?」
こんなふうに、初めて変数を使うとちょっとした壁にぶつかることがあります。
でも大丈夫!これは誰もが通る道なので、落ち着いて一緒に解決していきましょう!
Q1:変数を宣言しなくても動くのはなぜ?
A:VBAは変数を宣言しなくてもコードが動くことがあります。 ただし、宣言なしで使うと「思っていた動きと違う…」というトラブルが起こることも。
例えば、以下のコードは変数宣言なしでも動作します。
userName = "Taro"
MsgBox userName
でも、「綴り間違い」に気づかないまま別の変数を作ってしまうミスが発生しやすくなります。
userName = "Taro"
userNmae = "Jiro" ' ← スペルミスしてもエラーが出ない!
MsgBox userName
➡ 対策:必ず「Dim」を使って宣言しよう!
Dim userName As String
userName = "Taro"
宣言することで、ミスを防ぎながら安全にコードを書けるようになります!
Q2:変数の値が更新されない?なんで?
A:代入がうまくできていない可能性があります。
例えば、次のコードでは変数 total に値を入れたつもりが、更新されません。
Dim total As Integer
total = Range("A1").Value
total + Range("A2").Value ' ← 計算はしてるけど total に代入されてない!
➡ 対策:「=」をちゃんと使って代入しよう!
Dim total As Integer
total = Range("A1").Value
total = total + Range("A2").Value ' OK!
これで、ちゃんと計算結果が変数に反映されます!
Q3:変数の型を間違えるとどうなるの?
A:「型が一致しません」エラーが出ることがあります。
例えば、数値を扱う変数なのに「文字」を入れようとするとエラーになります。
Dim age As Integer
age = "二十歳" ' ← Integer型なのに文字を入れている!
➡ 対策:「何のデータを扱うのか?」を意識しよう!
Dim age As Integer
age = 20 ' OK!(整数型なので数値を入れる)
型を適切に設定することで、スムーズにデータを扱えるようになります!✨
Q4:変数の値が消えてしまった!どうして?
A:変数の「スコープ(有効範囲)」が原因かもしれません。
例えば、以下のコードでは userName の値が途中で消えてしまいます。
Sub Sample()
Dim userName As String
userName = "Taro"
End Sub
MsgBox userName ' ← ここで「変数が定義されていません」エラー
➡ 対策:「どこで変数を使うか」を考えよう!
Dim userName As String ' プロシージャの外で宣言
Sub Sample()
userName = "Taro"
End Sub
MsgBox userName ' OK!(変数が保持される)
変数のスコープ(どこで使えるか)を意識すると、値が消えないようにできます!
Q5:変数名に使えない文字ってある?
A:はい、VBAの変数名にはいくつかのルールがあります!
変数名でNGな例
Dim 1stName As String ' ← 数字で始めるのはNG!
Dim full name As String ' ← スペースはNG!
Dim MsgBox As String ' ← VBAの関数と被るのはNG!
➡ 対策:「英数字のみ+スペースなし」で名前をつけよう!
Dim firstName As String ' OK!
Dim fullName As String ' OK!(スペースなしならOK)
Dim userMessage As String ' OK!(関数名と被らない)
変数名をわかりやすく&エラーを避ける形でつけるのがコツです。
ここまでで、「変数を使ったときに起こる問題」をしっかり整理できましたね。
次の章では、「変数×If文(条件分岐)」「変数×ループ処理(繰り返し)」など、変数をさらに活用するステップへ進んでいきます!
変数×If文やループ処理へつなげていこう!
変数の基本を学び、マクロに活用できるようになりましたね。
ここからは、「条件に応じて動かす」「同じ作業を繰り返す」といった応用テクニックを紹介していきます!
① 変数 × If文(条件分岐)
「変数の値によって、動きを変えたい!」そんな場面では、If文を使います。
例えば、以下のようなコードで、ユーザーの点数に応じてメッセージを表示することができます。
Dim score As Integer
score = Range("A1").Value ' A1セルの値を取得
If score >= 80 Then
MsgBox "合格!よく頑張りました!"
Else
MsgBox "もう少し頑張りましょう!"
End If
ポイント
- If 条件 Then ~ で「もし条件が合えばこの処理をする!」というルールを作れる
- Else を使うと、「条件に合わない場合の処理」も書ける
例えば、「80点以上なら合格、それ以外なら励ましのメッセージ」という動作が簡単に作れます。
② 変数 × For文(ループ処理)で繰り返す!
「変数を使って、同じ処理を何度も繰り返したい!」 そんなときに便利なのが For文(ループ処理) です!
たとえば、「A1~A5のセルに、番号を連番で入れる」処理を考えてみます。
通常はこう書くしかありません。
Range("A1").Value = 1
Range("A2").Value = 2
Range("A3").Value = 3
Range("A4").Value = 4
Range("A5").Value = 5
でも、これではセルが増えたときに書き換えるのが大変!
そこで For文を使って「繰り返し処理」 にすると、一気にスマートになります。
Dim i As Integer
For i = 1 To 5 ' 1から5まで繰り返す
Range("A" & i).Value = i ' A1~A5にiの値を代入
Next i
このコードのポイント
- For i = 1 To 5 → 1から5までの繰り返し処理を指示
- Range(“A” & i).Value = i → “A1″から”A5″まで、変数iの値を入れていく
- Next i → 次の回へ進む(ループの進行)
この書き方なら、セルの数が増えても「5 → 10」など変更するだけで対応可能!
まさに「変数×ループ処理」のおかげで、コードの変更やメンテナンスがラクになるんですね。
③ 変数 × Do While文(条件付きループ)
もう少し応用すると、「特定の条件が満たされるまで繰り返す」Do While文も便利です。
例えば、「A列のデータを全部チェックして、空欄が出るまで処理を続ける」なんてことができます。
Dim rowNum As Integer
rowNum = 1 ' 最初の行番号
Do While Range("A" & rowNum).Value <> "" ' A列のデータが空になるまで繰り返す
MsgBox "セルA" & rowNum & "の値:" & Range("A" & rowNum).Value
rowNum = rowNum + 1 ' 次の行へ進む
Loop
このコードの動き
- A列のデータを1行ずつチェック
- データがある間はメッセージを表示
- 空欄になったら処理終了(ループを抜ける)
このように、「決まった回数の繰り返し」なら For文、「条件が満たされるまで繰り返す」なら Do While が便利ですね!
初心者向けのアドバイス
- If文と変数を組み合わせると「条件付きの処理」ができる!
- For文(ループ)を使うと、繰り返し処理がスマートになる!
- 「いつ終わるか決められないループ」には Do While が便利!
まとめ:変数を使うとマクロがもっと自由に!
ここまで学んできたように、変数を活用すると 「値を保存・変更できる」 だけでなく、「条件分岐」や「ループ処理」を組み合わせて、より自由なマクロ」が作れるようになります!
この知識を使えば、「自分の環境に合わせたマクロを柔軟に作る」 ことができます。
ぜひ実際にコードを書いてみながら、試してみてくださいね!

変数をうまく使えるようになると、マクロがぐんと自由になって、作業がもっとラクになりますよ!
「なるほど、ちょっとわかってきたかも?」と思えたなら、もう大成功です!
このブログでは、「むずかしそう…」と思う内容もできるだけわかりやすく、楽しく学べるように書いています。
VBAや自動化に興味がある方は、ぜひまた覗きに来てくださいね!
コメント