【Excel VBA入門】VBAとは?開発をスムーズに始める初期設定と演習

【Excel VBA入門】VBAとは?開発をスムーズに始める初期設定と演習

こんにちは、業務自動化ツール開発担当の吉池(@valmore_myoshi)です。

お仕事でExcelを使う機会、ありますよね?

毎回同じことの繰り返し、大量のデータを整形するといったExcel作業に心当たりがあるならVBAを使った自動化を検討しましょう!

VBAをマスターすれば時間のかかっていた作業も1クリック、短時間で完了。作業時間を短縮し、効率的に仕事を進められます。

本記事では、これからVBAを始める方を対象に、VBAの概要や開発を始めるための初期設定を解説します。最後に簡単なプログラムを作る演習もあるので、VBA開発のイメージをつかむ手助けになれば幸いです。

Excel VBAとは

Excel VBAとは、Excelで使えるプログラミング言語です。セルに値を入力したり、シートを作成したり、VBAを通してExcelを操作できます。

一度VBAでプログラムを書いてしまえば保存して使いまわせるので、ルーチンワークの作業時間を大幅に短縮可能。手作業で操作していたExcel作業が1クリックで済んでしまいます。

VBAとマクロの違い

VBAと聞くと必ずといっていいほど、Excelのマクロ機能の話が出ます。両方ともExcel操作を自動化する役に立ちますが、自動化の手順が異なります。

マクロ機能はExcel操作を記録し、VBAプログラムに変換してくれます。VBAを書かなくていい反面、冗長なコードになりやすく、複雑なExcel操作だと記録できない欠点があります。

マクロの仕組み

一方、VBAはプログラミング言語なので、複雑な操作であっても柔軟に記述して自動化できます。VBAを覚える必要があるのは言うまでもありませんが、プログラミングといっても難しいものではありません。ぜひこの機会に覚えましょう!

VBA開発を始める前の初期設定

VBA開発に移る前に初期設定を済ませておきましょう。デフォルトの状態だとExcelを開いても開発画面を開くことさえできません。

開発タブがないときはオプションから追加

最初にやることはExcelの開発タブを追加することです。最初から追加されておらず、設定しなければなりません。

まずはExcelを開き、ファイルをクリックしてください。

次に一番下に位置するオプションをクリックします。

すると、「Excelのオプション」ダイアログが表示されるので、①リボンのユーザー設定をクリック後、②開発タブにチェックを入れ、③OKボタンを押下して完了です。

開発タブが追加されていることを確認してください。

Option Explicitで変数宣言を強制

初期設定2つめは変数宣言を強制していきます。変数ってなに?と思うかもしれませんが、VBAを使うなかで値を格納する箱と考えてください。

数学を勉強したときに「x = 10」といった具合にxに10を格納し、その後の計算に使ったことがあると思います。

VBAでも変数を使うことができ、どんな変数を使うかをあらかじめ記述することを変数宣言と呼びます。

※変数について詳しく知りたい方はこちらの記事をご覧ください。
【Excel VBA入門】変数とは?図解とコード例から学ぶ基本的な使い方

デフォルトでは宣言しなくても変数を使えます。しかし、変数宣言しないとVBAで使っている変数を把握しづらいため、エラーの温床になってしまいます。だから変数宣言を強制させたいわけですね!

変数宣言を強制させるには、①開発タブから②「Visual Basic」をクリックしてください。

すると、VBAの開発画面が表示されるので、③ツールから④オプションをクリックします。

オプションダイアログが表示されたら、⑤「変数の宣言を強制する」にチェックを入れ、⑥OKボタンを押下して完了です。

変数宣言を強制が適用されると、VBAプログラムを書くエディタに「Option Explicit」が自動で挿入されるようになります。これで変数宣言をせずにVBAを実行するとエラーになる、というわけです。

開発画面の見方

初期設定が終わったら開発画面を見ていきましょう。開発画面は5つのウィンドウで区切られており、下記の役割を担っています。

  • ①ツールバー:モジュール作成やプログラム実行で使用
  • ②プロジェクトウィンドウ:プログラムの管理に使用
  • ③プロパティウィンドウ:モジュールごとの設定管理に使用
  • ④コードウィンドウ:VBAプログラムのコーディングに使用
  • ⑤イミディエイトウィンドウ:デバッグやコンソール表示に使用

各ウィンドウは使っているうちに覚えていくので、最初から全部覚えようとしなくても大丈夫です。

基本は①ツールバーでモジュールを追加し、④コードウィンドウでコーディング、⑤イミディエイトウィンドウで確認という流れでプログラミングしていきます。

簡単なVBAプログラムを作ってみる

いよいよ簡単なVBAプログラムを作っていきます。実際に手を動かすことでVBA開発の感触がつかめるので、ぜひ試してみてください。

まずはコードを書くファイルをExcel内に作ります。ツールバーから標準モジュールをクリックしてください。この標準モジュールがコードを管理するファイルのような役割を果たします。

すると、プロジェクトウィンドウに①Module1ができるのでクリックして②コードウィンドウを開きます。

あとはコードウィンドウにコードを書いていくだけです。今回、題材として取り上げるのは「Hello, World!!」と表示するだけの数行のプログラムです。最初に完成例を示してから、コードの意味を解説します。

Option Explicit

Sub test()
    Dim hello As String
    
    hello = "Hello, World!!"
    
    Debug.Print hello
End Sub

上記のコードをコードウィンドウに書いて、③実行ボタンをクリックすると④イミディエイトウィンドウに実行結果が表示されます。

できましたか?それではコードの意味を一つひとつ見ていきましょう!

まずはSub ~ End Sub()の記述が目につきます。これはモジュール内で実行するVBAプログラムを区切るものでプロシージャと呼びます。モジュール内には複数VBAプログラムを書けるので、各プログラムの始まりから終わりを明確にしているのです。

Sub プロシージャ名()
    なんらかの処理
    なんらかの処理
    なんらかの処理
End Sub

testプロシージャの中身を見てみると、1行目に「Dim hello As String」とあります。これが変数宣言です!Dimが変数宣言の合図でhelloが変数名、Asに続けて変数の型を記述します。

変数の型は数値や文字列などいくつかあり、変数に代入される値がどんなものかを最初に指定しています。今回のStringは文字列を意味します。

Dim 変数名 As 変数の型

続けて宣言した変数helloに”Hello, World!!”と文字列を代入しています。

hello = "Hello, World!!"

最後に文字列を表示する処理ですが、Debug.Printメソッドを使います。Debug.Printメソッドは文字列を指定することでイミディエイトウィンドウ(コンソール)に表示させます。このメソッドはよく使うので覚えておきましょう!

Debug.Print 表示させたい値

これでVBAプログラムが一つ出来上がりました。意外と簡単ではありませんか?ほんの数行書いただけですが、基本はこの繰り返しです。

まとめ

ExcelでVBA開発を始める準備はこれで終わりです。あとはプログラムの書き方を少しずつ学んでExcel操作を自動化していくだけですね!

本メディアではExcel VBAの習得に役立つ記事を連載で書いています。徐々にステップアップしてVBAをマスターしていきましょう。