# Excelマクロの作り方｜記録とVBAで初めてのマクロを作る手順

Excel のマクロを初めて作る人向けに、[開発] タブの出し方、マクロの記録、Visual Basic Editor で VBA を書いて動かす手順を解説します。マクロ有効ブック (.xlsm) での保存、インターネットから来たファイルでマクロが止められるときの対処まで Microsoft の公式ドキュメントで確かめました。

<Points>

- Excel のマクロは、[開発] タブの [マクロの記録] で操作を記録するか、Visual Basic Editor (VBE) に VBA のコードを書いて作る
- [開発] タブは最初は出ていないので、[ファイル] > [オプション] > [リボンのユーザー設定] で [開発] にチェックを入れる
- マクロを入れたブックは、`.xlsx` ではなく「Excel マクロ有効ブック」(`.xlsm`) で保存する。`.xlsx` にはマクロを保存できない

</Points>

## マクロとVBAの関係

毎月同じ手順で表を整える、決まった形式で集計表を作る、といった繰り返しの作業は、マクロにしておくとボタン 1 つで終わらせられます。

マクロは Excel に操作をまとめて実行させる仕組みで、その中身は VBA (Visual Basic for Applications) というプログラムの言葉で書かれています。[Microsoft の公式ドキュメント](https://learn.microsoft.com/ja-jp/office/vba/library-reference/concepts/getting-started-with-vba-in-office)でも、マウスやキーボードでできるほとんどの操作は VBA でもでき、同じ作業を何度も繰り返す自動化が VBA の最も一般的な使い方だと説明されています。

<Compare>
<Column title="マクロの記録">

- 操作をすると VBA のコードが自動でできる
- コードを書けなくても作れる
- 毎回同じセルに対する操作しか再現できない

</Column>
<Column title="VBAを書く" tone="accent">

- 最終行まで繰り返す、条件で分けるなどができる
- 記録したコードを土台に直せる
- 業務に合わせて細かく作れる

</Column>
</Compare>

## [開発] タブを表示する

マクロの記録や VBE は [開発] タブにありますが、このタブは最初は表示されていません。[公式サポート](https://support.microsoft.com/ja-jp/office/-開発-タブを表示する-e1192344-5e56-4d45-931b-e5fd9bea2d45)の Windows 版の手順は次のとおりです。

<Steps>
<Step title="オプションを開く">

[ファイル] タブ > [オプション] を選びます。

</Step>
<Step title="リボンのユーザー設定を開く">

左側の [リボンのユーザー設定] を選びます。

</Step>
<Step title="[開発] にチェックを入れる">

右側の [メイン タブ] の一覧で [開発] にチェックを入れ、[OK] を押します。

</Step>
</Steps>

一度表示すれば、チェックを外すまで [開発] タブは出たままになります。

## 方法1: マクロを記録して作る

まずは操作を記録して、マクロがどう動くかを確かめます。[公式サポート](https://support.microsoft.com/ja-jp/office/マクロ-レコーダーを使用してマクロを自動化する-974ef220-f716-4e01-b015-3ea70e64937b)の手順です。

<Steps>
<Step title="記録を始める">

[開発] タブの [マクロの記録] を押します。

</Step>
<Step title="名前と保存先を決める">

[マクロ名] を入れます。名前は文字で始め、使えるのは文字・数字・アンダースコアで、スペースは使えません。[マクロの保存先] はふつう [作業中のブック] のままにします。

</Step>
<Step title="操作をする">

[OK] を押したら、記録したい操作をそのとおりに行います。

</Step>
<Step title="記録を止める">

[開発] タブの [記録終了] (画面によっては [記録の停止]) を押します。

</Step>
</Steps>

記録したマクロは、[開発] タブの [マクロ] (または `Alt + F8`) で開く画面から、名前を選んで [実行] を押すと動きます。

<Note tone="caution">

公式サポートのとおり、マクロの記録はほとんどすべての操作を記録します。途中で間違えてクリックした操作もそのまま残るので、間違えたときは記録し直すか、あとでコードを直します。

</Note>

### 記録されたコードを見る

[マクロ] の画面で記録したマクロを選び [編集] を押すと、VBE が開いてコードが見られます。公式ドキュメントの例では、B1 に「Hello World」と入れて B2 を選んだ操作が、次のように記録されています。

```vb
Sub Macro1()
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Hello World"
    Range("B2").Select
End Sub
```

`Sub マクロ名()` から `End Sub` までが 1 つのマクロです。セルを選ぶ操作 (`Select`) も 1 行ずつ記録されていることがわかります。

## 方法2: VBEにコードを書いて作る

記録では「最終行まで繰り返す」といった処理は作れません。そうした処理は VBE に自分でコードを書きます。

<Steps>
<Step title="VBEを開く">

[開発] タブの [Visual Basic] を押します。[ショートカット キーの一覧](https://support.microsoft.com/ja-jp/office/excel-のショートカット-キー-1798d9d5-842a-42b8-9c99-9b7213f0040f)のとおり、Windows では `Alt + F11` でも開けます。

</Step>
<Step title="標準モジュールを足す">

VBE のメニューの [挿入] > [標準モジュール] を選びます。[公式リファレンス (英語)](https://learn.microsoft.com/en-us/office/vba/Language/Reference/User-Interface-Help/insert-menu)のとおり、新しい標準モジュールが今のブックのプロジェクトに追加されます。

</Step>
<Step title="コードを書く">

右側に開いた白い画面に、次のコードを貼り付けます。

</Step>
<Step title="実行する">

コードの中にカーソルを置いて `F5` キーを押します。Excel に戻ると、結果が入っています。

</Step>
</Steps>

```vb
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 に連番を入れ、そうでなければメッセージを出します。

```vb
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で繰り返し処理](/vba-for-next/) で詳しく説明しています。

## マクロ有効ブック (.xlsm) で保存する

<Note tone="caution">

[Excel でサポートされるファイル形式](https://support.microsoft.com/ja-jp/office/excel-でサポートされるファイル形式-0943ff2c-6014-4e8d-aaea-b83d51d46247)のとおり、ふつうの Excel ブック (`.xlsx`) には VBA のマクロを保存できません。[名前を付けて保存] で、ファイルの種類に「Excel マクロ有効ブック (*.xlsm)」を選んで保存してください。

</Note>

## マクロが動かないとき

[公式サポート](https://support.microsoft.com/ja-JP/excel/copy-a-macro-module-to-another-workbook)によると、Excel 2021 以降ではセキュリティのため、マクロは既定で無効になっています。マクロ入りのブックを開いたときに [セキュリティの警告] のバーが出たら、自分で作ったものなど信頼できるファイルのときだけ [コンテンツの有効化] を押します。

メールの添付やダウンロードで受け取ったファイルでは、「セキュリティ リスク」のバナーが出て、マクロが止められることがあります。[Microsoft の管理者向けドキュメント](https://learn.microsoft.com/ja-jp/microsoft-365-apps/security/internet-macros-blocked)によると、これはインターネットから来たファイルのマクロを既定でブロックする仕組みです。送り主が確かで中身を信頼できるファイルなら、ファイルを右クリックして [プロパティ] を開き、[全般] タブの [ブロック解除] にチェックを入れると、マクロを動かせるようになります。

## 自分で作るのが難しいときは

マクロの記録と簡単な VBA で、日々の小さな繰り返しはかなり減らせます。一方で、複数のファイルをまたぐ集計、ほかのシステムから出したデータの取り込み、エラーが出たときの止め方まで考えると、コードは一気に長くなります。

「記録したマクロが別のパソコンで動かない」「前任者が作ったマクロを直したい」といった相談も含めて、シートナビの[相談フォーム](/contact/)からお気軽にご相談ください。

## よくある質問

### Q. 記録したマクロを別のブックでも使えますか？

マクロの記録で [マクロの保存先] に [個人用マクロ ブック] を選ぶと、公式サポートのとおり Excel を起動したときにいつでも使えるマクロとして保存されます。特定のブックだけで使うなら [作業中のブック] を選びます。

### Q. マクロにショートカット キーを付けられますか？

付けられます。[公式サポート](https://support.microsoft.com/ja-jp/excel/run-a-macro-in-excel)のとおり、Windows では `Ctrl` + 小文字、または `Ctrl` + `Shift` + 大文字を割り当てられます。Excel にもとからあるショートカットと同じキーにすると、そちらが上書きされる点に注意します。

### Q. ボタンを押してマクロを動かすことはできますか？

できます。公式サポートでは、図形を右クリックして [マクロの割り当て] からマクロを登録する方法や、クイック アクセス ツール バーにボタンを足す方法が紹介されています。
