マクロとVBAの関係
毎月同じ手順で表を整える、決まった形式で集計表を作る、といった繰り返しの作業は、マクロにしておくとボタン 1 つで終わらせられます。
マクロは Excel に操作をまとめて実行させる仕組みで、その中身は VBA (Visual Basic for Applications) というプログラムの言葉で書かれています。Microsoft の公式ドキュメントでも、マウスやキーボードでできるほとんどの操作は VBA でもでき、同じ作業を何度も繰り返す自動化が VBA の最も一般的な使い方だと説明されています。
マクロの記録
- 操作をすると VBA のコードが自動でできる
- コードを書けなくても作れる
- 毎回同じセルに対する操作しか再現できない
VBAを書く
- 最終行まで繰り返す、条件で分けるなどができる
- 記録したコードを土台に直せる
- 業務に合わせて細かく作れる
[開発] タブを表示する
マクロの記録や VBE は [開発] タブにありますが、このタブは最初は表示されていません。公式サポートの Windows 版の手順は次のとおりです。
オプションを開く
[ファイル] タブ > [オプション] を選びます。
リボンのユーザー設定を開く
左側の [リボンのユーザー設定] を選びます。
[開発] にチェックを入れる
右側の [メイン タブ] の一覧で [開発] にチェックを入れ、[OK] を押します。
一度表示すれば、チェックを外すまで [開発] タブは出たままになります。
方法1: マクロを記録して作る
まずは操作を記録して、マクロがどう動くかを確かめます。公式サポートの手順です。
記録を始める
[開発] タブの [マクロの記録] を押します。
名前と保存先を決める
[マクロ名] を入れます。名前は文字で始め、使えるのは文字・数字・アンダースコアで、スペースは使えません。[マクロの保存先] はふつう [作業中のブック] のままにします。
操作をする
[OK] を押したら、記録したい操作をそのとおりに行います。
記録を止める
[開発] タブの [記録終了] (画面によっては [記録の停止]) を押します。
記録したマクロは、[開発] タブの [マクロ] (または Alt + F8) で開く画面から、名前を選んで [実行] を押すと動きます。
記録されたコードを見る
[マクロ] の画面で記録したマクロを選び [編集] を押すと、VBE が開いてコードが見られます。公式ドキュメントの例では、B1 に「Hello World」と入れて B2 を選んだ操作が、次のように記録されています。
Sub Macro1()
Range("B1").Select
ActiveCell.FormulaR1C1 = "Hello World"
Range("B2").Select
End Sub
Sub マクロ名() から End Sub までが 1 つのマクロです。セルを選ぶ操作 (Select) も 1 行ずつ記録されていることがわかります。
方法2: VBEにコードを書いて作る
記録では「最終行まで繰り返す」といった処理は作れません。そうした処理は VBE に自分でコードを書きます。
VBEを開く
[開発] タブの [Visual Basic] を押します。ショートカット キーの一覧のとおり、Windows では
Alt + F11でも開けます。標準モジュールを足す
VBE のメニューの [挿入] > [標準モジュール] を選びます。公式リファレンス (英語)のとおり、新しい標準モジュールが今のブックのプロジェクトに追加されます。
コードを書く
右側に開いた白い画面に、次のコードを貼り付けます。
実行する
コードの中にカーソルを置いて
F5キーを押します。Excel に戻ると、結果が入っています。
Sub WriteGreeting()
Worksheets(1).Range("A1").Value = "Wow!"
Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub
公式ドキュメントの例をもとにしたコードで、1 枚目のシートの A1 に「Wow!」と入れ、セルの周りを二重線で囲みます。記録したコードと違い、セルを選ばずに Worksheets(1).Range("A1") と直接指定しているので、どのセルを選んでいても同じ結果になります。
繰り返しと条件を入れる
VBA を書く利点は、繰り返しと条件分けができることです。公式ドキュメントの例を少し変えた次のコードは、A1 が「Yes!」のときだけ A2 から A10 に連番を入れ、そうでなければメッセージを出します。
Sub FillWhenYes()
Dim i As Integer
If Worksheets(1).Range("A1").Value = "Yes!" Then
For i = 2 To 10
Worksheets(1).Range("A" & i).Value = "OK! " & i
Next i
Else
MsgBox "A1 に Yes! と入れてください"
End If
End Sub
For i = 2 To 10 から Next i までが 9 回繰り返されます。繰り返しの書き方は VBAのFor Nextで繰り返し処理 で詳しく説明しています。
マクロ有効ブック (.xlsm) で保存する
マクロが動かないとき
公式サポートによると、Excel 2021 以降ではセキュリティのため、マクロは既定で無効になっています。マクロ入りのブックを開いたときに [セキュリティの警告] のバーが出たら、自分で作ったものなど信頼できるファイルのときだけ [コンテンツの有効化] を押します。
メールの添付やダウンロードで受け取ったファイルでは、「セキュリティ リスク」のバナーが出て、マクロが止められることがあります。Microsoft の管理者向けドキュメントによると、これはインターネットから来たファイルのマクロを既定でブロックする仕組みです。送り主が確かで中身を信頼できるファイルなら、ファイルを右クリックして [プロパティ] を開き、[全般] タブの [ブロック解除] にチェックを入れると、マクロを動かせるようになります。
自分で作るのが難しいときは
マクロの記録と簡単な VBA で、日々の小さな繰り返しはかなり減らせます。一方で、複数のファイルをまたぐ集計、ほかのシステムから出したデータの取り込み、エラーが出たときの止め方まで考えると、コードは一気に長くなります。
「記録したマクロが別のパソコンで動かない」「前任者が作ったマクロを直したい」といった相談も含めて、シートナビの相談フォームからお気軽にご相談ください。
よくある質問
記録したマクロを別のブックでも使えますか?
マクロの記録で [マクロの保存先] に [個人用マクロ ブック] を選ぶと、公式サポートのとおり Excel を起動したときにいつでも使えるマクロとして保存されます。特定のブックだけで使うなら [作業中のブック] を選びます。
マクロにショートカット キーを付けられますか?
付けられます。公式サポートのとおり、Windows では Ctrl + 小文字、または Ctrl + Shift + 大文字を割り当てられます。Excel にもとからあるショートカットと同じキーにすると、そちらが上書きされる点に注意します。
ボタンを押してマクロを動かすことはできますか?
できます。公式サポートでは、図形を右クリックして [マクロの割り当て] からマクロを登録する方法や、クイック アクセス ツール バーにボタンを足す方法が紹介されています。


