
【0から始める】ExcelでVBAを使うには
1. はじめに
1.1. Excelは知っているがVBAってなんぞや
Excelを使うとExcel関数、マクロ、ユーザーフォーム、テーブルなど用語を耳にするが、VBAを0から始める方にとっては「VBAってなんぞや?」という話だと思います。
結論から先に言うとVBA(Visual Basic for Applications)はExcelやAccessなどのMS(Microsoft)製品のアプリケーションで実行できるプログラミング言語です。
Excelには様々な機能がありますが、多くの方はグラフや表を作るというのが最も一般的な使い方で経験があるのではないでしょうか。
実際にデータを入力してExcel関数(SUM関数やVLOOKUP関数など)でExcelに計算させることやデータから図や表を作った経験があれば、最初は「へー便利な機能があるな」と感心したことがあると思います。
その便利機能を毎度大量のデータを使い、何度もマウスを操作し、キーボードで入力しというのはハッキリ言って面倒だと思います。
それをプログラムで制御しようとして出てくる手段がVBAです。
1.2. VBAで何ができるのか
「じゃあVBAで何ができるの?」というのが最初の疑問だと思います。
すごく雑な回答をすれば「MS製品で人間がマウスやキーボードで操作することは大抵出来る」です。
データの操作や計算はできるだろうとイメージはあると思います。
実際その通りでVBAはプログラミング言語であるので計算はもちろん出来ますし、Excelであればセルの操作やExcel関数の代入、グラフの作成など出来きます。
他にもExcel上にメールのテンプレートを作り、必要事項を記入後にボタンを押すことでOutlookを開いてメールを作成するなどMS製品同士で連携することもできるます。
出来ることは多岐に渡るため「VBAでこんなことできないか?」とPC上で操作する手段の1つとして考えるユーザーが増えてくれればプログラマーとして嬉しいです。
2. VBAのコードを書くまで
2.1. 開発タブの追加をしよう
では早速VBAのコードを書こうとすると「そもそもどこに書くのか分からない」というのが最初の壁だと思います。
まずデフォルトでは【開発】タブが表示されていないのでそれを出すことから始めましょう。(図1)

図1の左上に【ファイル】タブがあるので、それを開くと保存や印刷など様々な項目が左側に出てくると思いますが、その一番下に【オプション】があります。(図2)

これをクリックすると【Excelのオプション】が出てくるので【リボンのユーザー設定】から【開発】にチェックを付け【OK】を押します。(図3)

これで図1と同様に【開発】タブが追加されることが確認できます。
もちろんExcelのバージョンによっては表記が微妙に異なりますが、過去のバージョンでも同じように設定するので細かい文言は気にせず『オプションから【開発】タブを追加する』と覚えてさえいれば問題ないです。
2.2. やりたいことをイメージする
さて、これでVBAを書くことはできますが開発する上で基本的な事として押さえておきたいことがあります。
それは以下のざっくり3点に関して分けて考えることです。
入力部
マウスの操作
ボタンを押す
ダイアログから選択する
キーボードの操作
データを入力する
内部処理
計算をする
操作をする
シートやセルの操作
例外処理やエラー処理
出力部
計算や操作した内容が反映される
メッセージボックスが表示される
VBAを書くことはこの3点が必要で、
「①何をしたら処理が始まるか」
「②何をどのように処理するか」
「③処理した結果をどのように確認できるか」
を考える必要があります。
今回は以下の処理を考えてみましょう。
「①ボタンを押すことで処理を開始する」
「②メッセージボックスに”Hello, World”とを表示する」
「③メッセージが表示されることが確認できる」
2.3. ボタンを配置してみる
【開発】タブに【挿入】とあるのでそれをクリックするとフォームコントロールが表示されます。
その中に【ボタン】があるのでそれを選択します。(図4)

シートにボタンを配置すると【マクロの登録】と出てきますが、まだVBAでコードを書いていないのでマクロは登録できないです。(図5)
ここで【新規作成】でもいいですが今後開発することを考えて今回は【キャンセル】を選択します。

これでボタンの作成が出来ました。
ボタンに表示される文字を変えるのであればボタンを右クリックで【テキストの編集】から変更できるので必要に応じて変更してください。(図6)
またボタンを選択時に左上にオブジェクト名が表示されますが、これはボタン固有の名前なのでこちらを変更してもボタン上に表示される文字列は変更されないです。

2.4. モジュールの作成
【開発】タブにある【Visual Basic】をクリックしてみるとVBAのエディタが表示されます。(図7, 図8)


ではここからVBAを実際に書いてみよう…と言いたいところですが、初見だとどこに書くのか分からないと思います。
今回はフォームコントロールのボタンを配置したので、VBAでコードを入力する際は【標準モジュール】に記載します。
左側にプロジェクトエクスプローラーがあるので右クリックすると【挿入】があります。その中に【標準モジュール】を選択するとモジュールが作成されます。(図9)

左側にプロジェクトエクスプローラーが表示されない場合は【表示】タブの【プロジェクト エクスプローラー】を選択すると表示されます。(図10)

3. VBAで処理を実行する
3.1. VBAのコードを書く
やっとここまでくればVBAにコードを書くことが出来きます。
VBAではフォームコントロールから処理を呼び出す際はSubプロシージャで記載します。
今回はメッセージボックスで”Hello, World”を表示するので下記のように記載します。
Sub Click_Button_01()
MsgBox "Hello, World"
End Sub
余談:VBAで記載する際【Ctrl】+【スペース】で入力補助をしてくれる機能があります。実際"Msg”と記載した後にに押すと自動的”MsgBox”と入力してくれます。
3.2 ボタンにマクロを登録する
VBAでマクロを作成することが出来ましたがボタンにマクロを登録していないので押しても何も反応がありません。
Excelシートにあるボタンを右クリックし【マクロの登録】でボタンとマクロの結びつけを行います。(図11, 図12)


3.3 出力を確認する
ボタンをクリックすると”Hello, World”が表示されたメッセージボックスがポップアップすることが確認できます。(図13)

4. 最後に
4.1. まとめ
ここまで出来ればVBA初心者としてVBAの入り口に立てたと思います。
いざプログラミングの勉強をしようとしてもC言語やPython、RubyなどがオススメされVBAがあまり話題に挙がらないのを見て、少しでもプログラミングに興味を持った人間が身近なアプリケーションからプログラミングの楽しさを感じて欲しいと思い、そこに行き着くまでのチュートリアルとして本記事を書きました。
今後VBAのモジュールなど備忘録として書いていく予定です。
気が向けばVBAだけでなく、Pythonなど他のプログラミング言語を触れればと思います。
長々の駄文を失礼しました。それでは。