「VBAの基礎知識を身に付けたい」「Excelでマクロを組むためにVBAの学習を始めたい」「VBAを学ぶのにおすすめの本が知りたい」と考えて情報を探している方もいるでしょう。
この記事では、VBAの基礎知識からおすすめの学習方法までを詳しく紹介します。VBAの入門知識となる変数や、Excelでの使用方法も解説しますので、初学者の方、途中でつまずいてしまった方はぜひ参考にしてください。
VBAとは

VBAとは、「Visual Basic for Applications」の略で、マイクロソフトのOfficeの機能をさらに拡張できるプログラミング言語です。VBAでプログラムを作成すると、可能になる機能例は以下の通りです。
- アプリケーションソフトの動作を一部変更
- 繰り返し作業の自動化
- 複雑な工程の自動化
作業が固定されたタスクや複雑なプロセスをVBAで自動化できれば、事務的な仕事にかける手間や時間を削減できます。
マクロはVBAで書かれている
VBAとマクロは混同されがちなので、ここでそれぞれどのようなものかを明確に認識しておきましょう。VBAが「Office製品を拡張できるプログラミング言語」であるのに対し、マクロとは「Office製品に限らず、コンピュータの操作を自動化する機能を総称したもの」です。
Excelで自動化したい処理があるとき、「どのような処理を行いたいのか」をVBAでプログラミングしマクロとして記録することで、複雑な手作業をすることなく、自動化された処理を行うことができるようになります。
別のもので例えると、マクロは「掃除機(のボタン)」であり、VBAは掃除機を構成する部品です。掃除機という家電を使うとき、掃除機を組み立て、動かせるようにする知識はなくても掃除機のボタンを押すことで「掃除」という動作が自動化できますよね。マクロを作るための部品のようなものが、VBAなのです。
VBAを理解することでより複雑なマクロが作成できる
マクロのコードをコピーするだけで簡単な機能を利用できますが、さらに複雑なマクロを組みたい場合は、VBAによるプログラミングが必要となります。プログラミング言語としてのVBAをより深く理解し、プログラミングスキルを上げることによって、複雑なマクロを作成できます。
VBAを理解し、より複雑なプログラミングができることによって実現可能な機能の例として、次のようなものがあります。
- Web上のデータを収集して、まとめること(Webスクレイピング)
- 同じフォーマットのメール送信自動化・Microsoftの他のアプリとの連携
いずれもVBAを深く理解し、適切なプログラムを組むことで実現可能な機能です。これらの作業が自動化されれば、事務作業に携わる人の負荷がかなり軽減できます。職場に一人でもVBAを深く理解した人材が確保できれば、事務作業の効率化が期待できます。
VBAの基本である「変数」とは?

「変数」とは、指定された名前で内容が異なるデータを記録したり読み取ったりするためのメカニズムです。例えば日直を担当する方が毎日変わる場合、「日直」という変数を使用してプログラムを組み、マクロを実行すると、当日の担当者が誰なのか把握しやすくなります。
このように、変数はいわば「値を保持する入れ物」ということになります。数値と文字列の両方を変数に格納して使用できます。そして変数は一連のプログラムを用いて、処理ごとに変わるデータを逐一保管します。
Dimを使って変数を宣言しよう
実際の VBAプログラムでは、変数を使用する前に “Dim”を使用して「これは変数として使用します」という「宣言」を行います。変数のデータ型は、数値や文字列など、変数に入れる値の型を表したものです。
下記が変数を宣言した例です。
Dim 変数名 As データ型
データ型を指定しなくても変数として使用できます。ただし、データ型を指定しない場合は何でも扱える Variant型となり、宣言後の処理において「どのようなデータが入っているか」をいちいちチェックしなくてはいけなくなります。
そのため変数を宣言する場合は、よほどの例外でもない限りデータ型を指定しましょう。チェック処理が不要になることで、処理速度の向上が期待できます。
データ型を指定すると処理が速くなる
VBAに限らずプログラムを組む際には、必ず変数に入るデータの「型」を意識する必要があります。多くのデータ型がありますが、すべてを覚える必要はありません。以下のよく使うデータ型だけ覚えておいて、必要に応じて他のデータ型を調べましょう。
データ型 | サイズ | 説明 |
---|---|---|
String | 10バイト~ | 文字列 |
Integer | 2バイト | -32,768 〜 32,767の整数 |
Long | 4バイト | -2,147, 483,648 〜 2,147, 483,647の整数 |
Double | 8バイト | 倍精度浮動小数点数 |
Boolean | 2バイト | TrueとFalseをとる真偽値 |
Date | 8バイト | 日付型 |
Object | 4バイト | 任意のオブジェクト型 |
Variant | 16バイト | 任意の値、オブジェクト型でもOK |
ただし、実際に変数のデータ型を指定したケースと指定しなかったケースでは、人間が体感できるほどの処理速度の差はないとも言われています。 それでもプログラムが長くなればなるほど、変数のデータ型を指定しなかったことによる処理速度の遅れは積み重なっていくため、変数を宣言する場合は、必ずデータ型を指定しましょう。
また、データ型を指定すると、自分とは別の人がVBAのプログラムを改修する場合のわかりやすさ(可読性)が上がります。
操作範囲を指定する場合はSetを使う
基本的なデータ型のほかに、オブジェクトと呼ばれる値もあります。VBAではセルやワークシートなどを操作することができ、この操作対象のセルやワークシートをオブジェクトと呼びます。特定のシートやセルを操作する場合や、別のシートのセルの値を操作したい場合に使用します。
このオブジェクトを変数に割り当てる場合にのみ、変数名を代入するのではなく、Setを変数名の前に置く規則があります。オブジェクトの使用法としてはまず「変数」を宣言し、次にオブジェクトの宣言とともに変数をオブジェクトに「代入」します。
例)
Dim sheetNo1 As WorkSheet・・・変数の宣言
Set sheetNo1 = Worksheets(”該当するシート名”)・・・代入処理
ExcelでVBAを書くための手順

VBAでマクロを組みたい場合は、まずはEcxel側の設定を行いましょう。ワークブックに保存されたVBAプログラムは、初期状態では実行できません。そのため、VBAプログラムを使用できるように設定を変更します。
開発タブを表示させる
Excelのワークシートを開いたとき、画面上部のメニューバー直下に表示されている部分を「リボン」と呼びます。ExcelでVBAを操作するにはまず、この「リボン」にVBA開発タブを表示します。デフォルト(初期状態)では「開発」タブはリボンに表示されていません。
ただし「開発タブ」には、以下のボタンが配置されているので、表示されないとVBAプログラムを組んだりマクロとして記録し、実行したりすることができません。
- VBAソースコード(VBE、Visual Basic Editorの略)を入力する画面を表示するボタン
- マクロを実行するボタン(VBAで作成)
そこで、リボンに「開発」タブを表示させるように以下の設定をしてください。
- メニューから「ファイル」を選択
- 「オプション」を選択
- 「リボンのユーザー設定」を選択し、「開発」にチェックを入れて「OK」ボタンをクリックします
これで、[開発] タブがリボンに表示されます。
変数の宣言を強制に設定
それでは実際にVBAでプログラミングしてみましょう。マイクロソフトのOffice製品であればExcelを問わずどのツールでも可能ですが、今回はExcelを例に解説します。
Excelを起動し「空白のブック」を開きます。そして画面上部のリボンに表示されている [開発] -> [Visual Basic] をクリックして、[Microsoft Visual Basic for Applications]を開きます。
以下、[Microsoft Visual Basic for Applications]の画面で操作します。
まずは変数の宣言を強制するために、変数の宣言を強制するステートメント「Option Explicit」が自動的に挿入されるように設定しましょう。
- [Microsoft Visual Basic for Applications]のメニューから「ツール」→「オプション」を選択
- 「変数宣言を強制する」にチェックを入れてOKをクリック
この設定を行うことにより、宣言していない変数をプログラミングで使用すると、コンパイルエラーが表示されます。改めて[Microsoft Visual Basic for Applications]を新規で開いた場合「変数宣言を強制する」設定がされている場合は、初期状態で「Option Explicit」のメッセージが表示されています。
標準モジュールにコードを入力
次に標準モジュールの開き方と実際にコード入力まで解説します。
[Microsoft Visual Basic for Applications]を起動してマクロを記述するには、「標準モジュール」を追加して、その中にマクロを記述します。標準モジュールを追加するには、標準モジュールを追加したいブックを選択し、VBEメニューから[挿入]→[標準モジュール]を選択します。

では実際にVBAでメッセージを表示させるプログラムを組んでみましょう。VBAの1つのプログラムは「Sub」からはじまり「End Sub」で終わります。
今回は例として「Hello World!」というメッセージを表示させるプログラムを作成していきます。
Sub test()
MsgBox “HelloWorld!”
End Sub
メッセージを表示させる命令文が「MsgBox」で、表示させるテキストが””(ダブルクオーテーション)で囲まれた部分です。

プログラムを書き終えたら、Excelファイルを保存します。保存の際、ファイルの種類を「Excelマクロ有効ブック(*.xlsm)」に変更しましょう。
「Excelマクロ有効ブック(*.xlsm)」で保存した該当のファイルを開き、リボンの[マクロ]をクリックし該当のマクロを選択して[実行]ボタンをクリックすると「HelloWorld!」のウィンドウが表示されます。

【VBA入門者向け】おすすめ学習法3選

ここからはVBAを学習するうえでおすすめの方法を3つ紹介します。これからVBAを学び始める方、VBAを効率的に学びたい方はぜひ参考にしてください。
1.本や参考書から学ぶ
プログラミング初心者であれば、本や参考書から勉強するのがおすすめです。VBAは比較的歴史の長いプログラミング言語であるため、数多くの本が出版されており、教本としてわかりやすいものを選択できます。
また、スクールに通うよりは安く教本をそろえられるため、初心者でも気軽に始められる点も大きなメリットです。値段が気になる方の場合は、中古の本であればさらに値段が抑えられます。
ただし、書籍で勉強する場合は取りあえず選ぶのではなく、自分の学習レベルと学習したい内容を選ぶことが大切です。また、自分にとって読みやすい内容であるかも大切であるため、事前に中身を確認しておきましょう。
2.学習サイトから学ぶ
vbaを取り扱っている学習サイトも多数あるため、無料で取りあえず始めてみたい方には、学習サイトを活用して勉強するのもおすすめです。VBAを学べる学習サイトのなかから、特におすすめの無料サイトを3つ紹介します。
Excelエクセルマクロ・VBA塾

ExcelマクロやVBAを基礎から段階的に学べる学習サイトです。本当に基礎から分かりやすく解説してくれるので、まったくVBAの知識がない初心者でも安心して学び始めることができます。マクロやVBAをイチから学びたい方におすすめのサイトです。
ドットインストール

プログラミングを学べるWebサイトといえば最初に名前があがるほど有名なサイトです。1話3分ほどの動画でプログラミングを学べるのが特徴で、空いた時間でも気軽に学習に取り組めます。VBAの開発環境やVisual Basic Editorなどを詳しく解説しているので、VBAについてより広く学びたい方におすすめのサイトです。
moug(モーグ)

moug(モーグ)はExcelやWord、AccessなどのマイクロソフトのOffice製品のさまざまなテクニックを学べるサイトです。VBAを学べるコンテンツ「VBAひろば」内の「Excel VBA初心者」ページでは、VBAの基礎を学ぶことができます。
20部構成でマクロの作成・変更方法を学習できます。サンプルデータもダウンロードできるので、サンプルを実際に動かしてプログラムの動作を確認しながら勉強を進めたい方にもおすすめです。
3.学習用の動画で学ぶ
VBAを学習用の動画もYouTubeなどの動画サイトで公開されているため、参考にして勉強するのもよいでしょう。また、スクールや学習サイトの運営者の中には、有料の動画を配信している人もいます。これらの動画であればプロの講師の授業が聴けるため、勉強しやすい可能性が高いです。
ただし、動画コンテンツはさまざまな人が公開しているため、信ぴょう性の低いものも紛れている可能性もあります。事前に評価や投稿者の情報を確認して、信用できるものを選ぶ方がよいでしょう。
VBA学習におすすめの本6選

VBA学習にはたくさんの書籍がありますが、内容の理解のしやすさ、内容の正確さ、読みやすさなどを基準に学習に効果的な6冊を紹介します。
スラスラ読める Excel VBAふりがなプログラミング
「マクロの読み方を全部入れる(ふりがなで埋める)」という方法で究極の使いやすさを目指した、まったく新しいVBAの入門書です。コードのひとつひとつに日本語で解説が入れてあるため、コードの意味を理解しながら学習を進められます。挫折せずにVBAの基礎を学びたい方にオススメの一冊です。
図解! Excel VBAのツボとコツがゼッタイにわかる本「超」入門編
分かりやすさを求める方におすすめの本です。手っ取り早くExcelVBAプログラミングのコツを知りたい方、長い文章を読むのが苦手な方にもおすすめの一冊です。
1ページの文章量が少なく図解が多いので、VBA初心者でも一気に読めるでしょう。また、初心者にとって必要なVBAの入力や基本的なマクロの作り方がまとめられているため、初めてVBAを学習する人におすすめの1冊です。専門用語がまだ身についてなく、言葉よりもイメージ図で説明して欲しい方はぜひこちらの本を選択してください。
図解! Excel VBAのツボとコツがゼッタイにわかる本「超」入門編
できるイラストで学ぶ入社1年目からのExcel VBAできるイラストで学ぶシリーズ
初心者にもわかりやすいVBA文法書です。VBAに限らず、プログラミングを行うに当たってはそのプログラミング言語の「文法」を学ぶ必要があります。同書は、難しくなりがちな文法の解説を、図表を適切に使用しながら「とにかくわかりやすく」解説されています。非常に丁寧に文法を紹介しているため、他の文法書で理解できなかった方や、初学者の方におすすめです。
できるイラストで学ぶ入社1年目からのExcel VBAできるイラストで学ぶシリーズ
入門者のExcel VBA 初めての人にベストな学び方 (ブルーバックス)
この本では、典型的なVBAプログラムを書きながら、基本的な文法を少しずつ学びます。 「数行書いて動作確認」を繰り返しながら手順を追っていけば、未経験者でも挫折せずにVBAプログラムが書けるようになります。本書は、Excel VBA について学びたいが、何から学び始めればよいかわからないという方におすすめの入門書です。
実際に簡単なプログラムを書いて学習を進めることができるので、自然と「できた」と実感できるでしょう。
入門者のExcel VBA 初めての人にベストな学び方 (ブルーバックス)
例題で学ぶExcel VBA入門
ExcelVBAプログラミングの参考書としてオススメの一冊です。同書は中学生や高校生がプログラミングの基礎を学ぶ際の「教本」となるべく編集されました。そのためサンプルプログラムのなかには、わざと実行時エラーが発生するように組まれている組まれているものもあります。
プログラミングは「トライ&エラー」を繰り返しながら、ひとつずつエラーをなくして完成に近づける作業です。「なぜエラーが発生したのか」「どうすればエラーがなくなるのか」をここまでわかりやすく解説した本は、まれだと言えるでしょう。
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
ExcelVBAのプログラミングを始めようとしたとき、ほとんどの方がぶつかる疑問を「かゆいところに手が届く」ような丁寧さで網羅して解説した本です。混同されがちなマクロとVBAの関係から始まり、オブジェクトについての解説、「メソッドとは何か」、さらに条件分岐やループなど、高度なプログラミングに必要不可欠な要素までが掲載されています。
VBAの基礎を学び、一定のプログラミングスキルが身についており、さらに複雑なプログラムのマクロを作成したい場合は、同書が参考になるでしょう。
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
いちばんやさしいExcelVBAの教本 人気講師が教える実務に役立つマクロの始め方
プログラミングの入門書として知られる「いちばんやさしい」シリーズのExcelVBAの本です。仕事でVBAを活用する方でも気軽に覚えられるように、学習内容を必要なものに絞り、解説に力を入れています。
ExcelVBAの概要を図やサンプルコードを使用して、ていねいに解説されているため「ひとつひとつしっかり理解してから次のステップに進みたい」方、まずはExcelVBAの基礎を固めたい方におすすめです。
いちばんやさしいExcelVBAの教本 人気講師が教える実務に役立つマクロの始め方
VBAを学びマクロを使いこなそう

VBAでビジネスでも通用するプログラムを組めるようになるには、相当広い領域の知識と、実践スキルが求められます。そのためVBAを学ぶにあたっては、自分のレベルに合わせた「達成しやすい身近なゴール」を作って日々達成していくことが肝心です。
この記事で紹介したWebサイトや書籍を参考に、自分のレベルにあったものを選び取りつつ、時には書籍とサイトの勉強を並行して行いながらVBAの学びを深めていきましょう。