VBAを学びたいけど、初心者・入門向けの情報が多すぎる。
VBAを学習するメリットや習得するためのコツを知りたいな。
VBAは、Excelさえあればすぐに始められるプログラミング言語です。そのため、入門向けの情報をまとめているサイトや本がたくさんあります。
ただ、分厚い本やページ数の多いサイトが多く、何から手をつければいいのかわからない人も多いのではないでしょうか。
こんにちは! フリーランスエンジニア兼テックライターのワキザカです。
この記事では、VBA習得のメリット・実際に作るときのコツを解説します!
VBAを学習する流れやおすすめ本・サイトについても解説しているので、ぜひ参考にしてみてくださいね。
この記事はこんな人のために書きました。
- 初心者がVBAを習得するメリットを知りたい人
- VBA初心者でもわかる入門知識を知りたい人
- VBA初心者でもすぐに学習をスタートする方法を知りたい人
- VBAを学習すればExcelの作業効率向上につながる
- レベルに合った書籍や専門サイトを活用した学習がおすすめ
- 段階を踏んで作っていき行き詰ったらリサーチを繰り返そう
本記事の解説内容に関する補足事項
本記事はプログラミングやWebデザインなど、100種類以上の教材を制作・提供する「侍テラコヤ」、4万5,000名以上の累計指導実績を持つプログラミングスクール「侍エンジニア」を運営する株式会社SAMURAIが制作しています。
また、当メディア「侍エンジニアブログ」を運営する株式会社SAMURAIは「DX認定取得事業者」に、提供コースは「教育訓練給付制度の指定講座」に選定されており、プログラミングを中心としたITに関する正確な情報提供に努めております。
記事制作の詳しい流れは「SAMURAI ENGINEER Blogのコンテンツ制作フロー」をご確認ください。
VBAを学習するメリットとは?
まずVBAを学習するメリットについて解説します。メリットは、大きく分けて以下の2つです。
- 作業を時短・確実にこなすことができる
- 資格も存在している
1つずつ解説しますね。
作業を時短・確実にこなすことができる
VBAの最大の魅力は、普段のExcel作業を自動化できることです。
いちどVBAでコードを作ってしまえば、ミスなく確実に同じ処理を実行できます。夜に疲れがたまってミスしてしまうこともありません。筆者は以前、業務アプリの運用チームに所属していました。
そのときのお問い合わせ対応はPLがExcelでまとめており、毎月レポートを作って定例会で報告会をしていたのですが……PLが激務で大変だったこともあり、以下のような自動化ツールを作ったことがあります。
- 筆者が作ったVBAのツール「お問い合わせ台帳(Excel)から報告会用のレポートを作る処理」
-
- 処理1:Excelで管理しているお問い合わせ台帳からグラフを自動作成
- 処理2:作成したグラフをもとにPowerPointのテンプレに自動貼り付け
毎月30分 ~ 1時間程度かかっていた作業を、簡単に自動化できたのです。
また、このツールを応用して以下の処理も組み込み、お問い合わせ台帳の入力の手間も無くしました。
- お問い合わせメールの内容をトリガーに、自動でExcelのお問い合わせ台帳に登録
- 前日に登録されたお問い合わせの概要を、PLにメールで自動送信
PLの作業負荷を下げるツールを作れば評価も上がりますし、チームで動きやすくもなりますよね。
このように、業務に直結した自動化ツールを作れるのが、VBAの魅力なのです。
資格も存在している
VBAには「VBAエキスパート」と呼ばれる資格があります。「VBAエキスパート」は以下4つに分かれています。
- Excel ベーシック
- Excel スタンダード
- Access ベーシック
- Access スタンダード
資格を持っていれば、転職時のスキル証明にもなります。
ベーシック、スタンダードに分かれているので、1つずつ学習して取得していけば、網羅的に知識をつけることもできます。
VBAを学習するには
VBAの学習を始めるコツは、学習の流れを知ることです。
そこで次に、以下の流れでVBAを学習するコツについて解説しますね。
- 学習の流れの例を紹介
- 本にもたくさん種類がある!
- 専用のWebサイトもおすすめ
学習の流れの例を紹介
まず、VBAの学習の流れについて解説します。
初級から応用まで、以下の流れで学んでいくのがおすすめです。
- 初級:VBAの基礎を学びつつ学習方法を確立する
- 中級:VBAの実力をつけるためにツールを作る
- 上級:VBAでアプリを開発する
- 応用:Excel以外と連携したツールを作る
まずは、VBAの基礎を学びつつ学習方法を確立することが重要です。基礎力をつけないと、応用問題をやった時に対処が難しいからです。
VABの基礎では、以下を学びましょう。
- VBAのエディターの使い方・書き方・実行方法
- セルの書き込み・コピー・削除などのセル操作
- 変数・関数・ループ処理・条件分岐の作り方
基礎力がついたら、実際に手短なツールを作ってみるのが良いでしょう。効率化を実感できるのが、このタイミングですね。
更に慣れてきたら、画面を使ったアプリを作ってみましょう。VBAでは、以下のような画面を使ったアプリが作れるのです。
アプリが作れるようになってきたら、外部と連携したツールを作ったり、さらに応用力をつけていけばOKです。
もっと網羅的にVBAで学ぶ知識を知りたい方は、以下のVBAリファレンスの記事がおすすめです。
上記も参考にしつつ、VBAの知識をつけるだけでなく実際に手を動かして学びましょう。
本にもたくさん種類がある!
VBAの学習の流れで進めていけば学べますが、本で学習したい人もいるのではないでしょうか。
VBA学習にオススメの本は、以下のとおりです。
ただ、レベルがわからないとどれが自分に合った本かよくわからないですよね。そんな方向けに、上記本をレベル分けで以下で解説しています。
ぜひ参考にしてみてくださいね。
専用のWebサイトもおすすめ
VBAを学習できるWebサイトのおすすめは「いつも隣にITのお仕事」です。
VBAの書き方だけでなく、「データ一覧から請求書を自動で作る」のような連載記事が多いので、手を動かしながら必要な知識を学びやすいのでおすすめです。
また、他にもおすすめのサイトはたくさんあります。おすすめサイトを以下にまとめているので、ぜひ参考にしてみてくださいね
実際にVBAを動かしてみよう
ここからは、実際にVBAを書いて動かす方法を解説します。以下の流れで解説しますね。
- 一緒に書いてみよう
- 「ループ」に関する練習問題をやってみよう
- 「条件分岐・IF」に関する練習問題をやってみよう
まだ一度もVBAを書いたことがない…という場合は、以下を参考にVBAの基礎を覚えておくのがおすすめです。
一緒に書いてみよう
まずは、簡単なサンプルを書いてみましょう。
今回は、「Excelのセルに値を書き込むコード」を用意しました。コードをお見せしてから、詳しく解説しますね。
サンプルコード:
Sub Sample1() Worksheets("Sheet1").Range("A1").Value = "初めてのセル書き込み" End Sub
実行結果:
「Sub マクロ名 ~ End Sub」までが、1つの処理(マクロ)です。「Sub マクロ名」を入力してEnterキーを押すと、自動でEnd Subが表示されます。
この中に書いたコードが、マクロを実行したときに動きます。今回の場合は、「Worksheets(“Sheet1”).Range(“A1”).Value = “初めてのセル書き込み”」が実行されるイメージです。
コードの意味についてわかりやすく日本語で書き換えると、以下のようになります。
コード:
Worksheets("Sheet1").Range("A1").Value = "初めてのセル書き込み"
日本語に直した意味:
シート名が「Sheet1」のA1セルに「初めてのセル書き込み」を入力してね
「ブック名.シート名.セルアドレス」のように、ドット(.)でつなげて指定できます。ブック、シート、セルにはそれぞれ「プロパティ」を設定したり、「メソッド」を実行できます。
たとえば、シート名の場合は以下のような操作ができます。
- 「シート名.プロパティ」の場合:シート名の取得・変更など
- 「シート名.メソッド」の場合:シートの追加・削除など
ブック・シート・セルの関係と、プロパティ・メソッドの概要は覚えておくのがおすすめです。
「ループ」に関する練習問題をやってみよう
VBAに限らずプログラミング言語は、同じ処理を何度も実行するのが得意です。
そのため、ループ処理を覚えておくと良いでしょう。For文を使ったループ処理のサンプルは以下のとおりです。
Sub Sample2() 'ループ処理用の変数を用意 Dim i As Integer '3回セル書き込み処理をループ For i = 1 To 3 Worksheets("Sheet1").Range("A" & i).Value = i & "回目の処理" Next i End Sub
実行結果:
「For i = 1 To 3 ~ Next i」の処理で、「iが1からスタートで、3になるまでループする処理」を実行しています。
iは1つずつ数が増えるので、中に書いてある以下の処理を3回実行しています。
Worksheets("Sheet1").Range("A" & i).Value = i & "回目の処理"
また、「Rangeに書くセルアドレスの数字部分」「書き込む文字列」にiを使っているため、ループするごとに書き込む位置、文字列が変わっています。
ちなみに、ループ処理は今回紹介したFor文以外にもいくつかあります。以下で詳しく解説しているので、ぜひ参考にしてみてくださいね。
「条件分岐・IF」に関する練習問題をやってみよう
VBAでコードを作るときは、状況に応じて処理を分けたいケースがよくあります。
たとえば、以下のようなケースです。
- ケース1:日付に応じて消費税率を変えたい場合
- ケース2:請求書番号の頭文字によって請求書のテンプレートが変わる場合
他にも条件を変えたいケースはよくあるので、条件分岐するIF文の使い方は覚えておきましょう。
今回は、以下条件で分岐するサンプルを用意しました。
- サンプルの条件
-
- 2019年10月1日よりも前:消費税率8%
- 2019年10月1日以降:消費税率10%
実行前:
Sub Sample3() '変数を用意 Dim i As Integer 'ループ処理用 Dim targetDate As Date '3回セル書き込み処理をループ For i = 1 To 3 targetDate = Worksheets("Sheet1").Range("A" & i).Value '2019年10月1日未満の場合 If targetDate < "2019/10/1" Then Worksheets("Sheet1").Range("B" & i).Value = "消費税は8%" '2019年10月1日以降の場合 Else Worksheets("Sheet1").Range("B" & i).Value = "消費税は10%" End If Next i End Sub
実行結果:
日付によって、2019年10月1日以前/以降で消費税のパーセント表示が変わっていますよね。
「If targetDate < “2019/10/1” Then」は「2019年10月1日未満」という意味で、「Else」は「それ以外(2019年10月1日以上)という意味です。
IF文には便利な使い方が他にもいろいろあります。もっと詳しく知りたい場合は、以下がおすすめです。
練習問題・実際に作ってみる時のコツを紹介!
VBAの基礎的な書き方やサンプルを解説しましたが、「実際に自分で書いてみたら上手く作れない」と悩む人は多いです。
そこで次に、以下2つに分けて作るコツについて解説します!
- 分からないことがあったらこんな感じで検索してみよう
- マクロの記録で動きを観察することが出来る
分からないことがあったらこんな感じで検索してみよう
コードの書き方で迷ったら、まずはググってみましょう。
オススメの方法は、以下の2つです。
- おすすめ方法1:「VBA 調べたいこと」でまずはググる
- おすすめ方法2:読みやすいサイトを指定して検索する
たとえば、以下のようなエラーに遭遇したとします。
サンプルコード:
Sub Sample4() '変数を宣言して値を入れる Dim intA As Integer intA = 1000000 '変数の値をメッセージで表示 MsgBox intA End Sub
エラーメッセージ:
この場合は、エラーメッセージでググります。具体的に言うと、以下のように「VBA エラー オーバーフロー」のようにググります。
出てきたサイトを見て原因が分かればOKです。ただ、よくわからないケースもありますよね。
そんな時は、お気に入りのサイトを指定して検索することがおすすめです。「site:URL 知りたいこと」でググると、サイトを指定して検索ができます。
自分が読みやすいサイトであれば、理解しやすいですよね。調べたいことだけで出てこないときは、サイトを指定して調べると良いでしょう。
マクロの記録で動きを観察することが出来る
「作りたい処理が決まっている」という場合に便利なのが、「マクロの記録」です。Excelの操作をテープレコーダーのように保存し、VBAのコードに変換してくれます。
マクロの記録でVBAのコードを自動で作る手順は、以下のとおりです。
- マクロの記録の手順
-
- 手順1:開発タブから「マクロの記録」をクリック
- 手順2:マクロ名を入力してOKをクリック
- 手順3:自動化したい操作をエクセルで操作
- 手順4:開発タブから「記録終了」をクリック
画像付きの具体的な手順は、以下で詳しく解説しています。ぜひ参考にしてみてくださいね。
段階を踏んで作ってみよう
プログラミング初心者にありがちな間違いとして、以下のような問題があります。
始めてVBAを作る場合もいきなり完成させようとせずに、1つずつ細かい処理から作っていくのがおすすめです。
たとえば、以下のように少しずつレベルアップしていくと良いでしょう。
- セルに値を書き込む処理
- シートAからシートBにセルの値をコピーする処理
- 一覧データに1行データを追加する処理
さらに細かく書き方を覚えていきたい場合は、VBAのリファレンス記事がおすすめです。以下に分けて書き方がわかるリンクをまとめているので、ぜひ参考にしてみてくださいね。
- VBAの入門記事まとめ
- Excelの機能の操作まとめ
- セル操作まとめ
- シート操作まとめ
- ブック操作まとめ
- フォルダ・ファイル操作まとめ
- 配列の使い方まとめ
- 便利な関数の使い方まとめ
- エラー対策まとめ
- ツール・アプリ開発するときのまとめ
- コーディング力を鍛える方法まとめ
- 応用力を鍛える方法まとめ
まとめ
今回は、VBA習得のメリット・実際に作るときのコツについて解説しました。
VBAは環境構築不要ですぐに使えるので、簡単なコードから動かしてみるのがおすすめです。
実際にエラーやわからないことに遭遇したら、本記事で解説した内容を使って調べてみると良いかもしれませんね。ぜひ、VBAを学習して業務を効率化してみてくださいね!