Excelマクロ入門
マクロでできること
マクロとは、いつでも再実行できるExcelの操作記録です。同じ一連の操作を何度も繰り返している場合(レポートの書式設定、データエクスポートのクリーニング、グラフの作成など)、それは自動化の候補です。マクロは繰り返し作業をワンクリック操作に変え、毎週何時間もの時間を節約します。
プログラマーである必要はありません。Excelのマクロ記録機能は、キー入力とマウスクリックをキャプチャし、自動的にVBA(Visual Basic for Applications)コードに変換します。記録後は、ボタン、キーボードショートカット、またはワークブックイベントでマクロを実行できます。
ステップバイステップ:初めてのマクロを記録する
シナリオ:毎週月曜日に、同じ書式設定が必要な生の売上レポートを受け取ります。太字のヘッダー、収益列の通貨書式、列幅の自動調整、先頭行の固定、合計行の追加です。これを自動化しましょう。
ステップ1 — 開発タブを有効にする
- リボン上の任意の場所で右クリック>リボンのユーザー設定。
- 右側のパネルで開発をチェックします。OKをクリックします。
- 開発タブがリボンに表示されます。これがマクロのコントロールセンターです。
ステップ2 — 記録前に計画と練習を行う
- マクロ記録機能は、ミスも含めてすべてのクリックとキー入力をキャプチャします。まず記録せずに正確な手順を練習してください。
- レポートの書式設定の場合、手順は次のようになります:すべて選択(Ctrl+A)、ヘッダーを太字(Ctrl+B)、収益列を通貨書式に(Ctrl+Shift+$)、列幅の自動調整(すべて選択>列境界をダブルクリック)、先頭行の固定(表示>ウィンドウ枠の固定>先頭行の固定)。
- 各操作を練習してください。可能な限りキーボードショートカットを使用しましょう。マウスクリックよりもクリーンなVBAコードが生成されます。
ステップ3 — マクロを記録する
- 開発>マクロの記録。
- マクロ名:FormatWeeklyReport(スペースなし、わかりやすい名前)。
- ショートカットキー:Ctrl+Shift+R(Ctrl+Cなどの組み込みショートカットを上書きしないよう、必ずCtrl+Shiftを使用してください)。
- マクロの保存先:すべてのファイルで使用する場合は個人用マクロブック、このファイルだけで使用する場合はこのワークブック。
- 説明:「ヘッダーを太字、収益を通貨書式、列幅を自動調整、先頭行を固定、合計を追加。」
- OKをクリックします。記録が開始され、ステータスバーに停止ボタンが表示されます。
ステップ4 — 各書式設定アクションを慎重に実行する
- Ctrl+Aを押してすべてのデータを選択します。
- ヘッダーを太字に:行1を選択し、Ctrl+B。
- 収益列の書式設定:列Cを選択し、Ctrl+Shift+$(通貨書式)。
- 列幅の自動調整:Ctrl+Aを押し、ヘッダー内の任意の列境界をダブルクリックします。
- 先頭行の固定:表示>ウィンドウ枠の固定>先頭行の固定。
- 合計行の追加:データの下の最後の空行を選択し、=SUM(C2:C100)と入力し、太字および通貨書式に設定します。
- 開発>記録終了をクリック(またはステータスバーの四角い停止ボタンをクリック)。
ステップ5 — 新しいコピーでテストする
- 来週の生レポートのコピーを作成します(マクロには元に戻す機能がないため、必ず最初にコピーでテストしてください)。
- Ctrl+Shift+R(割り当てたショートカット)を押します。
- Excelが1秒足らずですべての書式設定手順を実行するのを見てください。毎週5分かかっていたタスクが瞬時に完了します。
- 問題が発生した場合:開発>マクロ>マクロを選択>編集で、VBAコードを表示および変更します。
主要テクニック
テクニック1 — 柔軟なマクロのために相対参照を使用する
デフォルトでは、マクロは絶対セル参照を記録します(常にB2を選択)。カーソルの位置に関係なく動作するマクロを作成するには:
- 開発>相対参照を使用する(記録前にオンに切り替えます)。
- これで、「3セル下に移動してSUMと入力する」と、開始セルに関係なくその相対移動が繰り返されます。異なる位置に適用するマクロに最適です。
テクニック2 — ワークシートにボタンを追加する
- 開発>挿入>ボタン(フォームコントロール)。シート上に四角形を描画します。
- マクロの登録ダイアログが表示されます。マクロを選択してOKをクリックします。
- ボタンを右クリック>テキストの編集で「レポートの書式設定」というラベルを付けます。
- ボタンを使えば、ワークブックを開く人なら誰でもマクロを見つけられます。キーボードショートカットを覚える必要はありません。
よくあるミス
- 不要な操作を記録してしまう。記録機能はスクロール、誤ったセル選択、意図しない書式変更もキャプチャします。記録されたコードを確認し(Alt+F11)、意味のない行を削除しましょう。
- 画面更新を無効にしていない。マクロがセル選択のたびにちらつくのを見るのは遅く、気が散ります。先頭にApplication.ScreenUpdating = False、末尾にApplication.ScreenUpdating = Trueを追加すると、5~10倍高速化します。
- マクロのセキュリティが作業をブロックする。Excelはデフォルトで信頼できないソースからのマクロをブロックします。マクロ有効ワークブックは.xlsmで保存してください。共有時は、セキュリティ警告が表示されたらコンテンツの有効化をクリックするよう受信者に伝えましょう。
- 元に戻すが使えない。マクロは元に戻すスタックをクリアします。必ず最初にデータのコピーでテストしてください。
上級者向けヒント
- 効率化のために記録コードを編集する:記録されたマクロはSelectとActivateを多用します(低速)。直接オブジェクト操作に編集しましょう:Range("A1").Select: Selection.CopyをRange("A1").Copy Destination:=Range("B1")に変更します。
- 自動トリガーとしてのワークブックイベント:Workbook_Open()を使用してファイルを開いたときにマクロを実行したり、Worksheet_Change()を使用してセル編集に反応させたりします。手動のマクロ実行を完全に排除できます。
- VBAでカスタム関数を作成:Function Commission(Sales) As Double: Commission = Sales * 0.1: End FunctionのようなVBA関数を作成し、シート内で=Commission(A2)として使用します。ビジネスロジックでExcelの関数ライブラリを拡張しましょう。