はじめに
Excel は非常に便利な表計算ソフトですが、「もうちょっと作業を自動化したい」「繰り返しの処理をボタン1つで簡単にできないかな?」と思うことはありませんか? そんなときに役立つのが VBA(Visual Basic for Applications) です。
VBAは、Excel(だけではなくWordやPowerPointなど、Microsoft Office全般)をより強力かつ柔軟に操作するために用意されたプログラミング言語です。Excel VBAでプログラムを作成すると、単純作業の繰り返しを自動化できるだけでなく、ユーザーインターフェースを作ったり、さまざまな関数を自由に組み合わせて活用することができます。
今回は「VBAで最も小さなマクロを作る」というテーマで、Excel からVBE(Visual Basic Editor)を起動し、標準モジュールを追加し、実際にコードを書いてマクロを実行する方法までをなるべく詳しく解説したいと思います。
この記事でわかること
- Excel VBA の開発環境(VBE)とは何か
- VBEの起動方法
- 標準モジュールの追加方法
- 1行ずつコードを入力する手順
- 最も小さなマクロの具体例(MsgBox “Hello VBA!!”)
- マクロの実行方法
Excel VBAとは?
Excel VBA は、前述のとおりExcelをより自由に動かすためのプログラミング言語です。「マクロ」とは、Excel VBAで書かれたプログラムのことを指すことが多いです。Excel上に集めたデータを加工したり、特定の操作を自動化したり、ユーザーフォーム(独自の入力フォーム)を作ったりといったさまざまなことが可能になります。
VBE(Visual Basic Editor)とは?
VBE(Visual Basic Editor) は、Excelの中に含まれているVBAコードを編集・管理するためのツール(エディタ)です。VBAのコードはこのVBEで作成し、編集し、デバッグ(エラーを見つけて修正)することができます。
一般的には、次のいずれかの方法でVBEを起動します。
- ショートカットキーで起動
- Alt + F11 キーを押す
- リボンメニューから起動
- [開発] タブ → [Visual Basic] をクリック
-
- もし [開発] タブが表示されていない場合、オプション設定で表示させる必要があります。
STEP1: Excel を開いてVBEを起動する
- Excelを起動
- まずはExcelを起動して、空のブックや既存のブックを開いてください。どのブックでも構いません。
- VBEを起動
- いくつか方法がありますが、最も簡単なのは Alt + F11 キーを同時に押す方法です。
-
- 画面が切り替わり、VBEウィンドウが立ち上がるはずです。
- VBEの画面構成を確認
- VBEウィンドウには、主に以下のようなパネルやウィンドウが表示されます(初期状態の場合)。
-
- プロジェクト エクスプローラー
- VBAプロジェクト(ブックやシート、モジュールなど)の構造を確認する場所
- プロパティ ウィンドウ
- 選択したオブジェクト(たとえばシートなど)のプロパティを確認・設定する場所
- コードウィンドウ
- 実際にVBAのコードを記述する場所
- イミディエイト ウィンドウ
- デバッグやコード実行時にいろいろ試すためのウィンドウ
もしこれらのウィンドウが表示されていない場合は、上部メニューから「表示 (View)」をクリックすると、表示したいウィンドウを選択できます。
STEP2: 標準モジュールを追加する
VBAでマクロを作成するときは、以下のような「どこに書くか」を明確にしておく必要があります。
- 標準モジュール
- 一般的なマクロを記述する場所です。
- ワークシートモジュール
- シート上のイベント(例: シートがクリックされたら…)に対応する処理を記述する場所です。
- ThisWorkbookモジュール
- ブック全体に紐づくイベント(例: ブックが開かれたら…)を記述する場所です。
ここでは、もっとも一般的な 「標準モジュール」 にコードを記述していきます。
- プロジェクト エクスプローラーを表示
- もし表示されていない場合は、VBEの上部メニューから [表示] → [プロジェクトエクスプローラー] を選択します。
- 標準モジュールを追加
- プロジェクト エクスプローラーに、開いているブックの名前(たとえば “VBAProject (Book1)”)が表示されていることを確認してください。
- そのブック名を右クリックし、表示されたメニューから [挿入] → [標準モジュール] を選択します。
- プロジェクト エクスプローラーに、Module1 などの名前で「モジュール」が追加されたのを確認します。
- コードウィンドウを開く
- 追加された Module1 をダブルクリックすると、コードウィンドウが表示されます。
- ここに、これからVBAコードを書いていきます。
STEP3: コードを入力する
最もシンプルなマクロを作成するために、以下のようなコードを記述します。.
1. Sub宣言を入力してEnter
まずはマクロ(プロシージャ)を定義するための宣言を行います。
- コードウィンドウをアクティブにし、次のコードを入力してEnterキーを押します。
Sub macro1
- Sub は「Subプロシージャ(サブルーチン)」の定義を示すキーワードです。
- macro1 は、このマクロの名前です(自由に変更可能ですが、今回は例として “macro1” にします)。
- Enter キーを押すと、自動的に End Sub が補完されるはずです。
2. インデントを入れる
コードを見やすく整理するため、インデント(字下げ)を入れてください。標準的なスペースはTabキー1回分で問題ありません。開発環境によってはスペースの個数に変換される場合もありますが、気にしなくてOKです。
3. MsgBox を入力する
次の行に、Hello VBA!! という文字列を表示するコードを入力します。
Sub macro1()
MsgBox "Hello VBA!!"
End Sub
上記のように、
- Sub macro1()
- 半角スペースまたはTabでインデント、MsgBox “Hello VBA!!”
- それを終了する End Sub
という構成になっています。
- ポイント: MsgBox は、メッセージボックスを表示する関数です。
- MsgBox “Hello VBA!!” と書くだけで、Windowsのポップアップダイアログのようなメッセージボックスに「Hello VBA!!」と表示されます。
ここでいう ”Hello VBA!!” は、もちろん任意の文字列に置き換えてOKです。
STEP4: マクロを実行する
実行方法1: VBE上で実行
- VBEの上部メニューから「実行」→「Sub/ユーザーフォームの実行」をクリック
- または、VBE画面のツールバーにある「▶(再生ボタンのようなマーク)」をクリック
- または、キーボードの
F5
を押す
macro1
が呼び出され、Excel画面上に MsgBox が表示される
- 「Hello VBA!!」というメッセージがポップアップするので、OKボタンを押して閉じる
実行方法2: Excel上でマクロを実行
- Excelウィンドウに切り替え
- [開発] タブ → [マクロ] をクリック (または Alt + F8 キー)
- マクロ一覧が表示されるので、
macro1
を選択
- [実行] ボタンをクリック
- 同様に、「Hello VBA!!」のメッセージボックスが表示されます
これで、めでたく 最も小さなマクロ が実行できました。
実際のコード全体(最終形)
この時点で完成したコードは、次のようになります。
Sub macro1()
MsgBox "Hello VBA!!"
End Sub
たったこれだけで、メッセージボックスを表示するマクロが作成できました。初心者の方でも簡単に動作を確認できますし、これが「VBAの第一歩」と言えます。
注意点・補足情報
- マクロの保存形式
- ExcelブックにVBAを含める場合は、拡張子が
.xlsm
の マクロ有効ブック 形式で保存する必要があります。
macro1
が含まれるブックを、通常の .xlsx
形式で保存すると、マクロコードは削除されてしまうので要注意です。
- マクロのセキュリティ設定
- Excelのオプションで、マクロの実行が制限されている場合は、マクロを実行できない場合があります。
- 「ファイル」→「オプション」→「セキュリティ センター」→「セキュリティ センターの設定」→「マクロの設定」にて、「VBAマクロを有効にする」などに設定しておきましょう。
- マクロ名の命名規則
- マクロ名(サブルーチン名)は英数字やアンダースコア(_)を使うことができますが、日本語や記号、先頭に数字を使うことはできません。
- 予約語(Example:
Sub
, For
, Next
などVBAのキーワード)をマクロ名にすることもできません。
- コードのコメント
- VBAでは、先頭に
'
(シングルクォーテーション) をつけると、その行はコメントとして扱われます。
- コードの意味や処理内容をわかりやすくするために、必要に応じてコメントを入れるとよいでしょう。
- 改行コードとスペース
- VBAのコードで改行しても大丈夫かどうかは、基本的にはステートメントごとに1行で書きますが、行が長い場合には
_
(アンダースコア)を使って行継続が可能です。
- 今回の例では短い行ですので、1行ずつ書くだけでOKです。
まとめ
- VBEを起動(
Alt + F11
)
- 標準モジュールを追加
- Subプロシージャを宣言 (
Sub macro1()
)
- コードを入力(
MsgBox "Hello VBA!!"
)
- End Sub で終了
- マクロを実行(
F5
あるいは [マクロ] から [実行])
たった数ステップで「Hello VBA!!」というメッセージボックスを表示するマクロを作成できます。ここで覚えた流れが、今後のVBA開発のベースになります。「MsgBox」を別の機能に置き換えるだけで、Excelでの自動化やシステム連携など、さまざまな拡張が可能になります。
これを機に、ぜひ他のVBA構文やオブジェクトの操作方法なども学んでみてください。VBAを使いこなせば、Excelの操作効率が格段に上がり、業務を大幅に効率化することができるようになります。
よくある質問 (FAQ)
Q1. マクロの保存時に、「マクロを含む形式で保存してください」と警告が出ましたが?
A1. Excelでマクロを含むファイルを保存するには、拡張子が「.xlsm」の形式で保存する必要があります。
- [ファイル] → [名前を付けて保存] → ファイルの種類を「Excel マクロ有効ブック(.xlsm)」に設定してください。
Q2. [開発] タブが見当たりません。
A2. [開発] タブは初期設定では非表示になっている場合があります。
- [ファイル] → [オプション] → [リボンのユーザー設定] で [開発] タブにチェックを入れ、OKをクリックすると表示されるようになります。
Q3. マクロが実行できません / 実行ボタンが押せません。
A3. マクロのセキュリティ設定が原因かもしれません。
- [ファイル] → [オプション] → [セキュリティセンター] → [セキュリティセンターの設定] → [マクロの設定] より、「VBA マクロを有効にする」または「すべてのマクロを有効にする」に設定して、再度試してください。
- セキュリティ上の理由から、マクロの有効化には注意が必要です。信頼できるファイルやコードで行いましょう。
Q4. 「Sub」じゃなく「Function」はどう違うの?
A4.「Sub」は値を返さないプロシージャ、「Function」は値を返すプロシージャです。
- 例えば、Function Add(a, b) As Long のように定義すれば、2つの引数を足して戻り値を返す関数を作れます。
- ワークシート関数として使えるようにすることもできます(Public宣言など条件はあります)。
おわりに
この記事では、Excel VBA のVBEを起動して「最も小さなマクロ」を作成し、実行するまでを解説しました。Excel VBAを触ったことがない初心者の方でも、ぜひこの流れを実際に試してみてください。
ほんの数行のコードからでも、VBAの世界が開ける第一歩になります。慣れてきたら、新しいプロシージャを作ったり、文字列を操作したり、セルの値を取得・設定したり、繰り返し処理や条件分岐を使ったりと、さまざまな機能に挑戦してみましょう。
VBAの可能性は無限大。少しずつ慣れていけば、Excelでの業務効率化が飛躍的に進むはずです。今後の学習や実務に役立てていただければ幸いです。
- VBA
- VBAは Excelの操作を自動化するマクロ機能で使われているプログラミング言語で「Visual Basic for Applications」の略になります。
-
- MsgBox
- 画面にメッセージを表示する。
- Sub…End Sub
- プロシージャは「Sub」で始まり「End Sub」で終わります。