こんにちは、ツクダンです。
さて今回は、VBA入門講義の第二講です。
前回の第一講で「開発」タブの表示を終え、マクロ開発の準備ができました。
もしまだ「開発」タブの表示が完了していない方は、リンクを張りますので第一講からご覧ください。
さて本日の講義内容は
第二講:VBA編集画面を起動して、その使い方を知ろう
です。
今回からいよいよ、マクロ開発の真骨頂であるプログラミング言語VBAを扱っていきます。
この講義を終えれば、いよいよあなたもプログラミング入門者。
はりきっていきましょう。
大丈夫。難しくないですから。
まずはVBEを開くところから

マクロの命令文をVBAで記述するためには、専用の編集画面を開く必要があります。
それが通称VBE(Visual Basic Editor)。
まずはそのVBEの開き方をご紹介します。
開き方は二種類。
- 「開発」タブにある「Visual Basic」をクリック
- 「Alt + F11」を同時に押す
開発タブを開くと、リボンの一番左に「Visual Basic」という欄があるのでクリックしてください。

Excelの裏側への扉が開き、「The編集画面」の見た目をしたVBEが起動します。

ただAltキーとF11キーを同時押しすれば一発でVBEが開きます。
こちらの方が早いですし、ショートカットを使えるとカッコいいので覚えてしまいましょう。
コードは「標準モジュール」に記述する

実はまだ、VBAのコードを記述するためのゾーンが開かれていない状態です。
そのゾーンの名前は「標準モジュール」。
続くこの項では、実際にこれからコードを記述していく「標準モジュール」を編集画面に挿入する方法を解説します。
「モジュール」って何?
「モジュール」とは、端的に言うと「部品」のこと。
ただ「液晶」や「フレーム」のような局所的な機能を持つ部品ではなく、それらの部品を集めてできた「モニター」のようにまとまりのある機能をそなえた部品だと思ってください。
一つの「システム」は複数の「モジュール」組み合わせて作られます。
「会社」というシステムが、「部署」という複数のモジュールから成り立つのと同じイメージです。
とりあえず「標準モジュール」と覚える
一言に「モジュール」といっても色々な種類があり、例えばVBAなら次の5種類のモジュールがあります。
- 標準モジュール
- ブックモジュール
- シートモジュール
- フォームモジュール
- クラスモジュール
ただし今はまだ、これらの違いを区別する必要はありません。
何も考えず「VBAは基本的に標準モジュールに記述する」と機械的に覚えておけばOKです。
実際に色々触ってみてからでないと、理解は進みませんからね。
どうしても知りたい方は以下のサイトを参照してみてください。
「標準モジュール」の挿入手順
それでは実際に標準モジュールを挿入していきましょう。
挿入には次の二つの方法があります。
- 「挿入」タブの「標準モジュール」を選択する
- ショートカット「Alt + I → M」を使用する

次のような画面になればOKです。
「Option Explicit」が自動で記述されていない人は、次の項で設定方法を解説します。

便利な設定:「Option Explicit」の自動入力

この項ではモジュールの先頭に「Option Explicit」ステートメントを自動で入力する方法を解説していきます。
なぜ「Option Explicit」を記述する必要があるのか
そもそも何のために「Option Explicit」ステートメントを記述するのか?という疑問を持っている方も多いでしょう。
端的にいうと、コードの記述ミスによるエラーを未然に防いでくれるから。
現段階で詳しく説明しても訳が分からないので、今はこの程度の認識で大丈夫です。
次の講義で「変数」という概念を学びますので、その際にまた詳しく説明します。
今どうしても詳しく知りたい人は以下のサイトを参照してください。
「Option Explicit」の自動記述を設定する方法
それでは「Option Explicit」を自動記述する設定方法を説明していきます。
やり方はとても簡単。
まずは「ツール」タブの「オプション」を選択してください。

すると図のような「オプション」ウインドウが開きます。
「編集」タブの中の「変数の宣言を強制する」にチェックを入れ「OK」をクリックすれば完了。

命令コードは「始まり」と「終わり」を書く

お待たせしました。
この項ではいよいよVBAのコードを記述・実行していきたいと思います。
手順は次の3ステップ。
- VBEを開き、標準モジュールの「Module1」を開く
- Sub~End Subの間に命令を記述する
- 「F5キー」or「▶」でコードを実行する
とりあえずコードを実行してみる
まずExcelファイルを開いたらAlt + F11でVBEを開き、標準モジュールの「Module 1」を開いてください。
(もとから開いてる人は流してくれて大丈夫です。)
右側のOption Explicitの下にコードを記述していきます。

続いてOption Explicitの下からEnterキーを二回くらい押して改行し、下のようにコードを記述してください。
一字一句まったく同じに記述してください。
下のコードをそのまま「コピペ」するのもありです。
Sub 初めての実行()
MsgBox "Hello World!"
End Sub
最期にSubからEnd Subの間のどこかにカーソルをおいた状態で、「F5キー」もしくは「▶」をおしてください。

下のようにメッセージが表示されたら成功。初めての実行おめでとうございます。

コードの詳細を解説
最期に先ほど実行したコードの解説をしていきます。
ほんの少しだけ複雑になってきますが、分かりやすく説明するので安心してください。

SubからEnd Subまでが一つのカタマリ
VBAコーディングの文法では、命令のカタマリは必ずSubとEnd Subの間に記述しなければなりません。
Subで命令の始まりを、End Subで命令の終わりをかならず宣言するのです。
「命令のカタマリってなんやねん。」
こてこての関西弁で、そんな疑問をぶつけてくる方もいるでしょう。
今のイメージとしては「一つのマクロを動かす、命令の組み合わせ」だと考えてもらえれば問題ないと思います。
そして SubとEnd Subで囲まれた「命令のカタマリ」のことを、「プロシージャ」と呼びます。
プロシージャ(procedure)とは、「手続き」という意味の英単語。
プログラム界隈では、複数の命令や処理などを一つにまとめ、外部から呼び出し可能にしたものをこう呼びます。
「Tabキー」で字下げを行い、コードを見やすくする
SubとEnd Subで始まりと終わりを示すだけでなく、インデント(字下げ)を行って内包構造を明確する慣習があります。
「SubとEnd Subの間の命令だよ~」というのを明確にするために、命令文の文頭は「Tabキー」一回分下げた位置から書き始めるわけです。
なぜこんな慣習があるのかというと、コードを記述していく上で分かりやすさを意識することは非常に重要だから。
バグが発生したとき、コードがめちゃくちゃだと解読が困難になり、問題点の修正が出来なくなってしまうのです。
もちろん内包構造は一つだけとは限りません。
例えばVBAには「繰り返し処理」を行う「For Next構文」があります。
そしてそれを使って「メッセージボックスを三回表示するコード」を書くと、MsgBox関数は二段階インデントされた位置に記述します。
Sub 繰り返し例文()
Dim i As Integer
For i = 1 To 3
MsgBox "Hello World!"
Next i
End Sub
プログラムにおける「関数」とは
数学と同様、プログラムの世界にも「関数」という概念があります。
さらにはその意味もほとんど同じで、「何かの値を入れると別の値が出力される」という役割を持っています。
例えばf(x) = 2x + 1 という関数なら、「入力した数値を2倍して、1を足した数値を出力する」といった感じです。

ただし、プログラムの世界の関数が扱うのは数値だけではありません。
先ほど実行したMsgBox関数を見れば分かると思いますが、プログラムの世界の関数は「文字列」を扱うこともできるのです。
値データの型によって、表記のルールが異なる
MsgBox関数の説明を聞いて気が付いた人もいるかもしれませんが、プログラムの世界では入力する「値データ」の種類によって表記ルールが異なります。
そして値データには「文字列」と「数値」の二種類があり、それぞれの表記ルールは以下の通り。
- 「文字列」:文字列をダブルクォーテーションで囲む。(例)”おめでとうございます”
- 「数値」:数値を半角で入力する。
MsgBox関数は「文字列」を入力すると、そのままメッセージボックスに出力する関数です。
そのため「Hello World!」はダブルクォーテーションで囲んで入力していたというわけです。
おわりに
おつかれさまでした。
今回の第二講では、VBEでコードを記述する方法を学びました。
さらにVBAを実際に記述し、初めてのプログラム実行も行いました。
コードの解説はやや難しい部分もあったでしょうが、ここまでくればあとは練習あるのみです。
もうあなたは軌道に乗り始めているのです。
今回の内容をしっかり復習して、次の講義も頑張っていきましょう。
それでは第三講で会いましょう。おつかれさま。