前回は、私がカラオケ店の副店長として感じた業務の非効率をきっかけに、VBAの世界に足を踏み入れた経緯と、VBAの基本についてお話ししました。
今回はその続きとして、「マクロ」と「VBA」の違いにフォーカスを当てます。
この2つの言葉はよく混同されがちですが、仕組みを理解すると、自動化の第一歩を踏み出す上での強力な武器となります。
マクロとVBAの関係性をざっくり説明すると?
まずは、ざっくりとイメージをつかむところから始めましょう。
- マクロ:Excelの操作を録画する「自動再生ボタン」
- VBA:プログラムそのもの
たとえばExcelでセルを選択して色を変える作業をして、「その手順を自動化したい」と思ったとします。
マクロを使えば、その操作を記録して、あとから自動的に再現できます。
そしてその記録は、VBAというプログラムの形で保存されているのです。
実際にやってみよう:マクロ記録でVBAを見る
ここからは、実際のExcelを使って、マクロ記録→VBA確認という流れを体験してみましょう。
手順①:開発タブを表示する
初期状態では「開発」タブが非表示のことが多いので、以下の手順で表示します。
- Excelの「ファイル」→「オプション」を開く
- 左側の「リボンのユーザー設定」を選択
- 右側の一覧から「開発」にチェックを入れてOK
これで「開発」タブが上部リボンに表示されるようになります。
また、Altキー+F11で開くことも可能です。
手順②:マクロを記録してみる
開発タブ → 「マクロの記録」をクリックし、以下のような操作を試してみましょう。
- 任意のセルを選択
- 「こんにちは VBA」と入力
- セルに黄色の塗りつぶしを適用
操作が終わったら、「記録終了」をクリック。これでマクロの記録は完了です。
手順③:VBAコードを確認する
続いて、記録されたVBAコードを見てみましょう。
- 「開発」タブ →「Visual Basic」をクリック(または Alt + F11)
- 開いた画面の左側「モジュール」→「Module1」などをダブルクリック
すると、先ほど自分が行った操作がVBAコードとして記録されているはずです。
Sub Macro1()
Range("A1").Select
ActiveCell.FormulaR1C1 = "こんにちは VBA"
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
End With
End Sub
これが、VBAの正体=Excel操作の自動実行を司るコードなのです。
VBAを自分で書けると何が違うの?
上のコードの中で、セルの位置(Range("A1")
)や文字列("こんにちは VBA")を、他の値に書き換えることができます。
つまりVBAを自分で理解して書けるようになれば、記録では表現しきれない、より柔軟で効率的な処理ができるようになるのです。
たとえば…
- 複数シートの同一セルを一括更新
- 「今月」などの条件に応じて処理を分岐
- ループを使って複数セルに同じ処理をまとめて実行
こうした操作は、マクロの「録画」だけではできません。
VBAを学ぶ=自動化の表現力と自由度を手に入れるということなのです。
初心者がよく勘違いしがちなこと
「マクロ=古い、VBA=新しい」?
→ いいえ。マクロはVBAを活用する1つの手段であり、両者は共存している存在です。
「マクロだけで十分じゃない?」
→ 一部の単純作業ではそれで問題ありません。ただし応用がきかない・融通が効かないという制限があります。
「VBAは難しいから触らない」
→ むしろExcelに詳しい人ほど入り口を見逃しがちです。VBAは最初の一歩が簡単です!
実務シーンでの応用イメージ
カラオケ店勤務時代、私は次のような自動化を行いました。
- 毎月Excelで作っていた請求集計シートを、VBAでワンクリック作成
- 複数のPDFから必要な情報だけを抽出し、整形してExcelへ転記
- 売上データから、指定された条件でハイライト・フィルターを一括実行
などなど…
これらは、マクロ記録では手が届かず、VBAを学んだからこそ可能になった世界でした。
まとめ:まずは「録画」から、次第に「編集」へ
マクロとVBAの違いは、あえて言えば 「再生専用プレイヤー」と「プログラマブルな編集ソフト」 の違い。
最初は録画(マクロ)から始めて、コードに興味が湧いたら少しずつVBAに触れるのが理想です。
VBAは、「書く」ことで自分仕様の自動化ができるようになる技術。
ですが「書けないとダメ」ではなく、観察・模倣からのスタートでも十分OKなんです。
次回は、VBAを書くための環境である「VBE」の使い方を記述していきます。
コードを書く場所はどこなのか?間違えたらどう直せばいいのか?を書いていきたいと考えています。