【初心者向け】Excelマクロの書き方入門:1行から始めるVBA実践ガイド

この投稿には、プロモーションが含まれている場合があります。
ようこそ♪ささぽんのExcel教室へ。
「マクロの記録はできるようになったし、次は自分でコードを書いてみたい!」
そう思っている方は、この記事でまずは1行から自分でマクロを書いてみましょう!

この記事は以下のような方におすすめです!
・「自分でマクロを書いてみたい!」と思っている方
・マクロのしくみや実行の流れを、基礎からしっかり理解したい方
・マクロの書き方を一からじっくり学びたいと思っている方
このブログは「基礎からExcelマクロを学びたいと考えている方」や、
「独学での習得に壁を感じた方」に向けて、やさしく、わかりやすく、丁寧に解説しています。
読み終わるころにはきっと、
「Excelマクロって意外と簡単かも!」「もっとやってみたい!」と思えるはず。
一緒に楽しく学びながら、Excelマクロ使いを目指しましょう!
![]() | よくわかる Microsoft® Excel® マクロ/VBA Office 2021/2019/2016/Microsoft 365対応 [ 富士通ラーニングメディア ] 価格:2860円 |
![]() | Excel自動化[最強]時短仕事術 マクロ/VBAの基本&業務効率化の即効サンプル【電子書籍】[ 守屋 恵一【著】 ] 価格:1518円 |
目次
1.まずはマクロを書いてみよう
いよいよ、マクロの記録ではなく自分でマクロを書いてみましょう!
まずはシンプルに、Excelのセルに文字を記入する1行だけのマクロを書いてみます。
■モジュールを追加して、マクロを書こう
まずはいつもの手順でVBEを開きましょう(※)。
VBEが開いたら、左の「VBAProject(ブック名)」を右クリック →「挿入」→「標準モジュール」を選びましょう。
標準モジュールを開くと、右側にコードを記述するための「コードウィンドウ」が表示されるので、試しに以下のコードを入力してみてください。

Sub HelloMacro()
Range("A1").Value = "初めてのマクロ"
End Sub
これは、A1セルに「初めてのマクロ」という文字を表示させるマクロです。まずは見よう見真似で書いてみましょう!
※VBEの開き方は以下の記事をご覧ください♪
■マクロを実行して、書いたコードを動かしてみよう
入力ができたら、VBEはいったん閉じて、Excelの画面に戻りましょう。

開発タブの「マクロ」ボタンをクリックし、「HelloMacro」を選んで「実行」ボタンを押します。

A1セルに「初めてのマクロ」と表示されれば成功です!
たった1行でも、想定通りに処理されるとちょっと嬉しくなりますよね。
このコードは、「Range(“A1”)」で「A1セル」を指定して、
「.Value = “初めてのマクロ”」でそのセルに文字を入れる、という意味になっています。
「Rangeは“どのセルを扱うか”を指定する部分、Valueは“そのセルの中身”を操作する部分」と考えるとわかりやすいです。
Rangeに記載しているセル番地を変えたり、Valueの後に記載している文言を変えたりすることで、自分の好きな場所に好きな文字を入れるマクロに変えることができます。ぜひ色々と試してみてください!
2. マクロの土台を理解しよう:Sub〜End Subと名前のルール
マクロを書くことができたので、次はその構造や名前の仕組みについて見ていきましょう。
■︎Sub〜End Subがマクロの範囲を示す
まず、前の章で書いたマクロをもう一度見てみましょう。
Sub HelloMacro()
Range("A1").Value = "初めてのマクロ"
End Sub
このコードは、”Sub”で始まり、”End Sub”で終わっています。
これは、マクロの始まりと終わりを示す印のようなもので、
この間に書いたコードが1つのマクロとして認識され、処理されます。
つまり、Sub〜End Subで囲まれた部分がマクロの「ひとかたまり」なんです。間に書いた内容は、実行時に上から順に処理されていきます。
今後は複数行のマクロを書いていくことになりますが、それらもすべてこの「かたまり」の中に書いていきます。
マクロの「かたまり」には他にも種類がありますが、今はこの形だけを覚えておけば大丈夫です。
他の種類については、必要になったときに紹介していきますね。
■マクロはこの「かたまり」単位で実行される
Excelで Alt + F8 を押すか、開発タブから「マクロ」を押すと、登録されているマクロの一覧が表示されます。
お気づきの方もいらっしゃるかと思いますが、この一覧に表示されているマクロの名前は、”Sub”の後に半角スペースをあけて記述した部分が表示されているのです。例えば:
Sub test()
' なんらかの処理
End Sub
→ マクロの実行画面で表示される名前は「test」になります。
試しに、マクロの名前を自分で変えてみましょう。
例えば、先ほどのマクロを次のように書き換えてみます:
Sub FirstCode()
Range("A1").Value = "初めてのマクロ"
End Sub
この状態で Alt + F8 を押してみると、マクロ一覧に表示される名前が「FirstCode」に変わっていることが確認できます!

このように、Subのあとに書いた名前が「マクロ名」として認識されるようになっており、
マクロの実行時にはこの名前を選んで操作することになります。
■マクロ名の基本ルール
マクロ名は原則自由につけられますが、いくつかの基本ルールがあります。
<マクロ名の基本ルール>
- 英字で始める(数字で始めるとエラーになる)
- 使えるのは英数字とアンダースコア(_)
- スペースは使えない
- VBAのルールで決められている単語(例:Sub、Endなど)は使えない
※マクロ名に日本語をつけることもできますが、
設定やバージョン次第では不具合が起きる場合があるため、
英語+数字やアンダースコアの形式で名前をつけておくのが安心です。
例えば、Sub Message_1() や Sub InputName() のように、
英語と数字、アンダースコアを活用して名前を付けると良いです。
実際の業務では複数のマクロを書いていくことになると思うので、
自分や他の担当者が見てわかりやすい名前をつけるようにしましょう!
3.他のマクロも書いてできることを広げよう
せっかくの機会なので、今度はいろいろなマクロを書いてみて、どんなことができるか体験してみましょう!
■数式をセルに入れてみよう
まずは、「セルに数式を入れる」マクロです。
以下のようにコードを書いて、実行してみましょう。
Sub InsertFormula()
Range("A1").Formula = "=TODAY()"
End Sub
このマクロを実行すると、A1セルに今日の日付が表示されます。
これは、「=TODAY()」 という数式をマクロで入力していますね。
先ほどと違う点としては、”Range(“A1″)”に続く部分が”.Formula”となっている部分です。
.Value は、セルに文字や数字をそのまま入れる際に使用するのに対し、 .Formula は、数式を入れたいときに使います。
どちらも、「セルに何を入れるか」を指定するための書き方です。
詳しくはまたご説明しますが、何となくでも知っておくと書けるマクロの幅が広がります!
■メッセージボックスを表示してみよう
次は、セルではなく「ポップアップウィンドウ」にメッセージを表示するマクロです。
以下のコードを記述して、実行してみてください。
Sub ShowMessage()
MsgBox "おはようございます!"
End Sub
実行すると、画面中央に「おはようございます!」というメッセージが表示されます。
このように、マクロはセルの操作だけでなく、ユーザーにメッセージを伝えることもできるんですね。
MsgBox は、処理の完了を知らせたり、ちょっとした確認をしたいときに便利な命令です。
これを使いこなすだけで、マクロを使う人に対して親切で使いやすいツールになります!
■マクロを複数書いて、切り替えて実行してみよう
ここまでで、マクロが3つできました。
実は、1つのファイル・標準モジュールに複数のマクロをまとめて書くこともできるんです。
例えば、次のように2つのマクロを並べて書いてみましょう。
Sub InsertFormula()
Range("A1").Formula = "=TODAY()"
End Sub
Sub ShowMessage()
MsgBox "おはようございます!"
End Sub
この状態で Alt + F8 を押すと、マクロの一覧に「InsertFormula」と「ShowMessage」が表示されます。
実行したい方を選んで「実行」を押すことで、目的に応じてマクロを切り替えて使うことができます。
これが、「マクロを複数作って使い分ける」基本的なやり方です。
今後、自分の作業に合わせてマクロを増やしていくときにも役立ちますよ!
4.マクロの実行に慣れるための基本操作ガイド
ここまで、書いたマクロは「Alt + F8」で選んで実行してきました。でも実は、もっと便利な実行方法がいくつかあるんです。
■F5キーで一発実行
まずは「F5キー」を使った実行方法です。
VBE(Visual Basic Editor)でマクロのコードを開いた状態で、F5キーを押すと、マクロがそのまま実行されます。
ただし、カーソルの位置には注意が必要です。
先ほど書いていただいたようにマクロが同じモジュールに2つ以上ある場合、
どのマクロが実行されるかは、今カーソルがどこに置かれているかによって決まります。例えば:

画像のようにInsertFormulaの中にカーソルがある状態で「F5」を押すと、InsertFormulaが実行されます。
同じように、ShowMessageの中にカーソルがある状態で「F5」を押すと、ShowMessageが実行されます。
Sub〜End Sub の外側にカーソルがあるとエラーになることもありますのでご注意ください。
実行前に「今どこにカーソルがあるか」を確認してからF5キーを押しましょう!
■F8キーで1行ずつ実行
次に紹介するのは、「ステップ実行」です。
F8キーを使うと、マクロを1行ずつ実行することができます。
例えば次のようなマクロがあったとします:
Sub StepSample()
Range("A1").Value = "開始"
Range("B1").Value = "進行中"
Range("C1").Value = "完了"
End Sub
このマクロをVBEで開いて、カーソルを Sub StepSample() の行に置いた状態で F8 を押してみてください。

画像のように、1行ずつ黄色にハイライトされながら順番に実行されていくのが分かります。
「マクロがどう動いているか」を目で追えるので、処理の流れを確認したいときにとても便利です!
■ブレークポイントでマクロを途中停止
さらに、特定の行で実行を一時停止させる方法もあります。
これを「ブレークポイント」といいます。
止めたい行をクリックして、左端のグレーの部分をクリックするか、F9キーを押すと赤丸がつきます。
赤丸がついた状態でマクロを実行すると、赤丸の箇所で処理を中断してくれます。
Sub ShowMessage()
MsgBox "ここで止めます"
MsgBox "次に進みます"
End Sub
例えばこのマクロで、1行目にブレークポイントを設定してみましょう。

画像のように赤丸がついた状態でF5を押すと、その行で実行が一時停止します。
一時停止をした状態でこれまでの処理内容を確認したり、 F8で1行ずつ進めたりすることができます。
コードが長くなってきたときや、うまく動かない部分を調べたいときにとても便利です。
このように、マクロの実行操作にはいろいろな方法があります。
状況に応じて使い分けられるようになると、マクロ操作がよりスムーズになりますよ!
5.まとめ
ここまで、初のマクロ記述として1行の簡単な処理や押さえておくべき点を説明してきました。
今回覚えていただきたいポイントは次の3つです!
- マクロは Sub〜End Sub でひとかたまりになっている
- Subの後の単語がマクロの名前となるが、名前に使える文字にはいくつかルールがある
- 標準モジュールを開いてF5で全部実行、F8で1行ずつ実行できる
たった1行でも、自分で書いたコードがちゃんと動くと、ちょっとした達成感がありますよね。
色々なマクロを書いている私も、自分の想定通りに動いた時の達成感がマクロ開発のやりがいに繋がっています!
まずは簡単な処理から、書けるものを増やしていきましょう。
\ Excelマクロ制作も承っています /
各種クラウドソーシングサイトにて業務効率化ツールの作成・カスタマイズを承っております。
ご相談・お見積もりは無料ですので、まずはお気軽にご覧ください!
