Excelマクロ入門:変数の使い方と便利な活用法

ようこそ♪ささぽんのExcel教室へ。
マクロを書いていると、同じ数字や文字が何回も登場して、その度に毎回同じことを書くってちょっと面倒だな…と思ったことはありませんか?
そんなときに便利なのが、「変数」という仕組みです。
この記事では、初心者の方にも分かるように「変数って何?」から丁寧に解説していきます!

この記事は以下のような方におすすめです!
・同じ値を何度も入力するのが手間だと感じたことがある方
・記録されたマクロで「Dim」の意味が分からなかった方
・マクロを効率よく書くための基本を知りたい方
このブログは「基礎からExcelマクロを学びたいと考えている方」や、
「独学での習得に壁を感じた方」に向けて、やさしく、わかりやすく、丁寧に解説しています。
読み終わるころにはきっと、
「Excelマクロって意外と簡単かも!」「もっとやってみたい!」と思えるはず。
一緒に楽しく学びながら、Excelマクロ使いを目指しましょう!
![]() | よくわかる Microsoft® Excel® マクロ/VBA Office 2021/2019/2016/Microsoft 365対応 [ 富士通ラーニングメディア ] 価格:2860円 |
![]() | Excel自動化[最強]時短仕事術 マクロ/VBAの基本&業務効率化の即効サンプル【電子書籍】[ 守屋 恵一【著】 ] 価格:1518円 |
目次
1.変数とは?
■数字や文字列を一時保管する「箱」
Excelマクロで色々なコードを書いていると、同じ数字や文字列が何回も出てくることがあります。たとえば、特定の日付や税率など、共通で使う値が複数の場所に出てくること、ありますよね。
でも、そのたびに毎回同じ値を書くのは手間ですし、後から変更があったときに全部書き直すのは大変です。
そこで使えるのが「変数」という仕組みです。
変数は、数字や文字列などの値を一時的にしまっておくことができる「箱」のようなものです。
たとえば、処理したい日付を「date」という名前の箱に入れておくと、あとはその箱を呼び出すだけで、値を何度でも使い回すことができます。
Dim date
date = "2025/5/1" '「2025/5/1」をdateに入れる
MsgBox "今日は" & date
Cells(1, 1).Value = date
このコードを実行すると、メッセージボックスに「今日は2025/5/1」と表示され、A1セルにも「2025/5/1」が入力されます。
これは、date という変数に「2025/5/1」を入れておいたことで、date を呼び出すたびにその値が使われている、ということです。
このように、変数を使えば同じ値を何度も書く必要がなくなり、マクロをよりスマートに書けるようになります!
■変数のイメージ:数学の「x」と「y」を思い出そう
変数という言葉を聞くと「難しそう…」と感じるかもしれませんが、実は中学校の数学でお馴染みの「x」や「y」も変数という概念でした。
たとえば「x = 3」と書いたとき、その後に出てくる「x」はすべて「3」として計算されますよね。
このように、何かしらの値を一時的に記憶しておくというのが、変数の基本的な役割です。
Excelマクロでも考え方は同じで、値に名前をつけておくことで、何度でも呼び出して使えるようになります。
この「名前をつけて値をしまっておく箱」が、まさに変数なんです。
さらに、マクロでは「x」や「y」ではなく、tax や total、today など意味のある名前を自分で自由に決められます。
箱の名前を工夫することで、「0.08」や「2025/5/1」といった数字が並ぶだけのコードより、ぐっと読みやすくなります。
変数は、値をわかりやすく整理するためのラベルのようなもの。
後から見返したときにも理解しやすく、他の人にも伝えやすくなるのが大きなメリットです!

2. 変数を使うメリット
1章でも変数の良い点について簡単に触れましたが、ここではもう少し具体的に、その便利さをご紹介していきます!
■値の変更があった際に修正が簡単!
Excelマクロを実務で使っていると、「あとからこの数字だけ変えたい」という場面がよく出てきます。
例えば、税計算に使っている税率を変える、日付を変える、などですね。
もしコード内の色々なところに同じ値を直接書いていたら、変更のたびに全部探して修正しなければなりません。そうなると手間もかかりますし、修正漏れがあればミスのもとにもなります。
そこで便利なのが「変数」です。
あらかじめ値を変数として設定しておけば、修正はたった1か所で済むのです!
例えば、以下の2つのコードを比べてみましょう:
'税率を毎回指定する場合
Cells(1,2) = Cells(1,1)*0.1
Cells(2,2) = Cells(2,1)*0.1
Cells(3,2) = Cells(3,1)*0.1
'税率を変数で指定する場合
Dim tax
tax=0.1
Cells(1,2) = Cells(1,1)*tax
Cells(2,2) = Cells(2,1)*tax
Cells(3,2) = Cells(3,1)*tax
どちらも実行すると同じ処理がされますが、「あとから税率を変えたい」となったときに必要な修正の手間が大きく違います。
1つ目のコードでは、0.1 という数字を3行それぞれに書いているので、例えば税率を8%に変更する際にはすべての 0.1 を 0.08 に書き換える必要があります。
一方、2つ目のコードでは、最初に tax = 0.1 と定義しているため、その1ヶ所だけ0.08に書き換えれば大丈夫です。
他の行ではすべて tax を使っているので、変更が必要になったときは最初の1行だけ直せば正しく処理されます。
今回はシンプルな例でしたが、同じ値が何十か所にも登場したり、コード内のいろんな場所に分散していたりすると、変数を使って一か所にまとめておく便利さを実感できるはずです!
■値に名前をつけることでコードが読みやすくなる!
変数のほかの大きな強みは、「値に名前をつけられる」ことです。
たとえば「0.9」という数字がマクロに出てきたとき、それが割引率なのか、達成度なのか、重要度の重みなのか—
何を意味しているかは、その場だけ見てもなかなか分かりません。
でも、変数に意味のある名前をつけておけば、その値が何のために使われているのかがパッと伝わるようになります。
たとえば、ある商品価格に割引を適用する処理と、プロジェクトの達成度を表示する処理があったとします。
それぞれの値はどちらも「0.9」ですが、役割はまったく別物です。
'割合を直接指定する場合
Cells(1, 2) = Cells(1, 1) * 0.9
MsgBox "進捗率は" & (0.9 * 100) & "%です"
'割合を変数で指定する場合
Dim discountRate
Dim achievementRate
discountRate = 0.9
achievementRate = 0.9
Cells(1, 2) = Cells(1, 1) * discountRate
MsgBox "進捗率は" & (achievementRate * 100) & "%です"
今回も、どちらのコードも実行結果は同じです。
ただし、1つ目のコードを見てみると、「0.9」という数字が一見同じ割合を意味しているように見えてしまいますよね。
実際には、「割引率」と「達成度」という全く異なる目的で使っているのですが、
数字がたまたま一致していることで、コードの意図が読み取りにくくなってしまいました。
一方、2つ目のコードでは discountRate や achievementRate という名前がついていることで、
「これは価格の割引に使う」「こっちは進捗表示用」だとすぐに分かります。
マクロにはアポストロフィ(‘)でコメントをつける機能があるため、それを活用して値にメモをつけておくのも良いですが、
メンテナンスのしやすさという意味でも、あとから見て混乱しそうな値には変数を使っておくのが安心です!
3.変数の書き方
ここまでで、変数の便利さを少しずつ実感していただけたでしょうか?
この章では、実際に変数をマクロの中で使うための、基本の書き方を解説していきます!
■基本の流れ
マクロの中で変数を使う際には、大きく3つのステップを踏みます:
- 変数を宣言する
→マクロに「この変数を使います」と宣言する(値を入れるための箱を作る) - 変数に代入する
→宣言した変数に値を入れる(箱に詰める) - 変数を使う
→入れた値を取り出して使う(箱から取り出す)
例えば、実際には以下のようなコードになります:
Dim message ' ← 宣言する
message = "こんにちは" ' ← 代入する
MsgBox message ' ← 使う
このコードでは、
- 「message」という変数を宣言する
- 「message」に「こんにちは」を代入する
- 「message」を使ってメッセージボックスを表示する
という流れになっています。
それではこの3ステップを1つずつ見ていきましょう!
■変数を宣言する
変数を使う前には、まず「この名前の変数を使います」とマクロに伝えておく必要があります。
箱を作っておかないと何も入れることができないので、先に箱だけ作っておくイメージですね。
変数を宣言するときには、基本の形として「Dim」というキーワードを使い、「Dim 変数名」の形式で記述すれば完了です。
例えば:
Dim price
このように書くだけで、price という変数を使えるようになります。
ちなみに、変数を宣言する際に「この箱には数字を入れます」などのデータの種類(型)を指定する方法や、Dim以外のキーワードで宣言する方法もありますが、
それについては別の記事で詳しく解説しますので、今はこの形だけ覚えておけば大丈夫です!
■変数に値を代入する
変数を宣言したら、次はその「箱」の中に値を入れてみましょう。
この作業を「代入」といいます。
代入には「=(イコール)」を使って、以下のように書きます:
price = 1200
このコードでは、price という変数に「1200」という数値を入れています。
あくまで「左辺の箱に、右辺の値を入れる」というイメージで、数学の「=」とは少し意味が違う点に注意です!
例えば、日付や文字列を入れるときも同じ書き方で大丈夫です:
Dim today
today = "2025/5/1"
Dim greeting
greeting = "おはようございます"
よく使う値や、あとから変更する可能性のある値は、こうして変数に入れておくと管理がラクになります。
■変数を使う
変数をに値を入れたら、いよいよその値を使ってみましょう。
使い方はとても簡単で、元々その値を直接書いていた場所を、変数名に置き換えるだけです。
例えば、宣言・代入済み変数「price」や「greeting」を使うときは以下のように書きます:
Cells(1, 1).Value = price
MsgBox greeting
先ほど代入したprice の中身(1200)がA1セルに入り、greeting の中身(おはようございます)がポップアップで表示されます。
このように、変数は処理の中で何度でも使い回せて、あとから値を変更するのも簡単になるのが魅力です。
ここまでご紹介したように、変数は「宣言 → 代入 → 使用」の3ステップで書くことができます。
まずはこの基本の流れを押さえて、シンプルなコードから少しずつ試してみましょう!
4. 変数を使うときの注意点
変数はとても便利な仕組みですが、ちょっとしたミスがマクロの不具合につながることもあります。
この章では、初心者の方に多い「気づきにくいミス」を防ぐためのポイントと、安心してマクロを書き進めるためのおすすめ設定(Option Explicit)をご紹介します!
■変数名のスペルミスに注意!
マクロで変数を使っていると、よくあるのがスペルミスです。
一文字違うだけで、まったく別の変数として扱われてしまうため、思い通りに動かない原因となります。
例えば、次のコードを見てみましょう:
Dim total
total = 1000
MsgBox totaI ' ← 「l(エル)」が「I(アイ)」になっている
ぱっと見では問題なさそうですが、total ではなく totaIになってしまっているため、エラーにならずに空の値が表示されたり、処理が上手くいかなかったりすることがあります。
もうひとつ例を見てみましょう:
Dim Hello
Hello = “こんにちは”
MsgBox hello
大文字と小文字が1文字違うだけでも、宣言した変数とは別のものとして認識されるため注意が必要です。
ここでは、Hello を大文字で宣言していますが、hello と小文字で呼び出してしまっているため、マクロは別の変数として認識してしまいます。
こうした見た目の違いは気づきにくく、マクロを実行してもエラーにならないことがあるため、原因不明の不具合として見逃してしまうケースも少なくありません。
※実際には、マクロの機能で大文字小文字を自動補正してくれる場合もあります。
■Option Explicitを使ってスペルミスを防ごう
こうしたスペルミスを防ぐための頼れる機能が、Option Explicit です。
これは、「すべての変数は事前に宣言してから使いましょう」というルールをマクロ全体に適用するもの。
この設定を有効にすると、宣言していない変数を使おうとしたときに、マクロがエラーを出して教えてくれるようになります!
先ほどの例で言えば、total や Hello は Dim で宣言されているのでOKですが、間違って書いてしまった totaI や hello は宣言がないため、次のようなエラーになります:
変数が定義されていません(Variable not defined)
これにより、実行前にミスに気づいて修正できるので、安心してコードを書くことができます!
■Option Explicit の使い方
Option Explicit を使うには、マクロのモジュールの先頭に以下の1行を追加するだけです。
Option Explicit
実際に以下のコードを入力して、実行を押して見ましょう:
Option Explicit
Dim Hello
Hello = “こんにちは”
MsgBox Helo

画像のようなエラーが出て、「あ、変数名が違っていた!」とすぐに気づくことができます。
〈Option Explicitを自動適用する設定の方法〉
毎回 Option Explicit を手で書くのは少し面倒に感じますが、実はVBEの設定で、自動的に挿入されるようにしておくことができます!
- VBE(Visual Basic Editor)を開く
- ツール>オプションを押下
- 「編集」タブの「変数の宣言を強制する」にチェックを入れて保存する


この設定をオンにしておくことで、新しくマクロを書くときは常にOption Explicitが1行目に書かれた状態からスタートできるようになります。
「変数は必ず宣言する」
この習慣を身につけておくことで、スペルミスや思わぬ不具合を防ぎ、安心してマクロを書けるようになりますよ!
5. まとめ:変数を使ってマクロをもっと柔軟に!
この記事では、Excelマクロでよく使われる「変数」について、基本の考え方から、使い方・注意点までを段階的にご紹介してきました。
■変数の基本をおさらい!
ここまでの内容を、簡単に振り返っておきましょう!
変数を使うときは、次の3ステップが基本です:
ステップ | 内容 | 役割 |
宣言(Dim) | 変数を使うと宣言 | 値を入れる箱を用意する |
代入(=) | 値を変数に入れる | 箱に中身を詰める |
使用 | 処理で変数を使う | 箱の中身を取り出して使う |
このように、「箱を作って → 中身を入れて → 使う」という流れが、変数の基本形です。
まずはこのステップを自然に出来るようにしていきましょう!
■変数を使うとできること!
- 何度も出てくる値を1か所にまとめられる
→ 変更もラク&ミスを減らせる! - 意味のある名前をつけられる
→ コードが読みやすく、意図が伝わりやすい!
あわせて、Option Explicit を使えば、宣言漏れやスペルミスにもすぐ気づけて安心です。
「変数を正しく使う」ための補助機能として、ぜひ一緒に活用してみてくださいね!
次回は「変数のデータ型」や「スコープ(有効範囲)」など、もう少しステップアップした内容をご紹介する予定です!
\ Excelマクロ制作も承っています /
各種クラウドソーシングサイトにて業務効率化ツールの作成・カスタマイズを承っております。
ご相談・お見積もりは無料ですので、まずはお気軽にご覧ください!
