
4月23日(水)~25日(金)に東京ビッグサイトにて、Japan DX Week2025春が開催されました🌸今回、弊社SMSデータテッ...
VBAの入門編を知りたい方はいませんか?
VBAとは、ExcelなどのMicrosoft office製品で活用できるプログラミングコードのことです。VBAでマクロを設定すれば、データの収集や転記、グラフ作成などを自動化できます。業務効率化やヒューマンエラーの防止などに役立つでしょう。
本記事では、VBAの概要やできること・できないこと、基本操作・構文について詳しく解説します。VBAの入門編について知りたい方、業務を効率化したい方は、ぜひ参考にしてください。
VBA(Visual Basic for Applications)とは、WordやExcelなどの機能拡張で活用されるMicrosoft社が開発したプログラミング言語のことです。以下のように製品ごとに呼ばれるケースもあります。
Microsoft office製品でのルーティンワークを自動化することが可能で、業務効率化に役立ちます。
ここからは、VBAに関する以下の事項について解説します。
マクロとは、Excelで行う操作を自動化する仕組みのことです。例えば、データの転記やコピーをワンクリックで実施可能です。マクロの設定には、録画した再生機能の使用とVBA活用の大きく2種類が存在します。マクロの記録機能は簡単に活用可能な一方で、対応できない作業も存在します。VBAを活用すれば、マクロの記録で自動化できない業務の処理も可能です。
なお、マクロの詳細や組み方、業務でそのまま使えるコードは以下をご覧ください。
⇒マクロの基礎を解説!できること・できないことや活用方法、注意点まとめ
⇒マクロとは?マクロによる業務効率化方法やVBAとの違いも紹介
⇒マクロの組み方とは?VBAとの違いやサンプルコードについて紹介
⇒便利なマクロ一覧45選!マクロの組み方やそのまま使えるコードを紹介
VBAを活用する主なメリットは以下の通りです。
VBAにおける最大の魅力は業務効率化と生産性の向上です。人間が行っているルーティンワークを自動化可能で、売上の向上やコスト削減に役立つコア業務に集中できるでしょう。また、設定通りに処理が実行されるため、ヒューマンエラーの防止や属人化の解消にも役立ちます。
別システムを導入する必要がなく、追加コストがほとんどかからない点も魅力です。近年は便利なシステムが多数開発・提供されていますが、利用する場合には初期費用や毎月のランニングコストが発生します。
VBAは便利ですが万能ではありません。ここからは、以下を解説します。
VBAで自動化できる主な作業は以下の通りです。
VBAはデータの集計や転記、取得などの定型業務を得意としています。膨大なデータを手作業で処理する必要はありません。ExcelデータのPDF変換を自動化することも可能です。Microsoft Office製品間であれば連携もできるため、多彩な業務で役立つでしょう。
さまざまな作業で活用できるVBAですが、以下は不得意です。
例えば、Excelではワークシートの最大容量が決まっており、その上限を超えるデータへの対応はVBAを活用してもできません。また、画像を認識してテキストデータに変換するなどの処理も不可能です。
VBAはMicrosoft office製品専用のプログラミング言語です。VBAと親和性がないアプリケーションとの連携や、システム開発も苦手としています。Microsoft office製品専用ではできない業務の処理を実施したい場合には、他のツールや言語を活用しましょう。
続いて、ExcelにおけるVBAの基本的な使い方を以下のステップに分けて解説します。
VBAの記述に関する項目は「開発タブ」の中にあります。ただ、初期設定では開発タブが表示されないため、開発タブを表示させましょう。
まず、Excelの「ファイル」タブをクリックして、メニューにある「その他」を選んだ後に「オプション」をクリックします。オプションメニューが表示された後に「リボンのユーザー設定」を選び「開発」にチェックを付け「OK」をクリックします。
続いて、標準モジュールを作成します。標準モジュールとは、全てのシートから使用可能な変数や関数を宣言するファイルのことです。
標準モジュールを作成するには、開発タブにある「Visual Basic」をクリックします。Visual Basicのポップアップが表示されたら、上部のメニューバーにある「挿入」を選び「標準モジュール」をクリックします。
標準モジュールを作成すると「Module1」が表示されます。
上記のModule1に「Sub」と「End Sub」で囲んだコードを記述します。
コードを記載したら、問題なく動くかを確認しましょう。実行時は、上部にある緑の三角ボタンを押すだけです。
問題なくプログラムが実行されたら保存します。マクロを設定したExcelファイルを保存する際には、ファイルの種類で「マクロ有効ブック」を選択しましょう。
続いて、VBAにおける以下の基本文法を解説します。
Subプロシージャとは「Sub」と「End Sub」で囲まれた以下構文のことです。
Sub プロシージャ名()
※コードを記載
End Sub
マクロは、SubとEnd Subに挟まれたコードに従い処理を実行します。プロシージャを識別するため、Subの後にプロシージャ名を記載しましょう。プロシージャ名には、アルファベットやひらがな、漢字などが活用できます。数字も利用可能ですが、プロシージャ名の先頭には利用できません。また、記号やスペースの活用も不可です。
VBAにはコメントを記述する機能が実装されています。後でプログラムを確認した際参考になるため、利用すると良いでしょう。
プログラム内にコメントを記述する場合には、シングルクォーテーション(’)を用います。シングルクォーテーション後に記述された文字列は、行末までがコメントとなります。コメントは書かれていないのと同じ扱いとなり、プログラムの実行に影響を与えません。
VBAでは、一行が一つの処理として扱われます。途中でコードを改行するとエラーが発生するため、長いコードであっても一行での記述が基本です。
ただし、半角スペースの後にアンダーバー(_)を記述すれば、処理が次の行にもまたがって実行されます。長いコードの改行時には、半角スペースとアンダーバーを活用しましょう。
変数とは、計算途中の値などを一時的に保存する入れ物のことです。VBAでは、変数を用いる前に一度宣言することが推奨されています。変数の宣言は以下の通り記述します。
Dim 変数名
変数にはアルファベットや漢字、アンダーバーなどを活用できます。ただし、先頭はアルファベットもしくは漢字などの文字を用いなければなりません。
宣言した変数への値代入は以下の通りです。
Dim 変数名
変数名 = 値
左側に変数名、右側に値を記述してイコール(=)でつなげます。
VBAでは、変数の宣言が推奨されていますが、宣言しなくてもエラーは発生しません。エラーを発生させるには、モジュールの先頭に「Option Explicit」を記載します。なお、以下の手順を踏めばOption Explicitを自動挿入可能です。
VBAでは扱うデータ型が定義されています。変数の宣言時には、どのデータ型の値を格納するかの指定も実施します。主なデータ型は以下の通りです。
データ型 | 表記 | 値の範囲や定義 |
---|---|---|
文字列型 | String | 文字列 |
バイト型 | Byte | 0~255の整数 |
日付型 | Date | 西暦100年1月1日~西暦9999年12月31日(日付と時刻) |
ブール型 | Boolean | TrueもしくはFalse |
オブジェクト型 | Object | オブジェクト参照するデータ型 |
他にも多数のデータ型がありますが、まずは上記を理解しましょう。
宣言した変数を利用できるのは、同じプロシージャ内のものです。同じモジュール内の複数プロシージャに対して、共通の変数を用いる際にはプロシージャ外での宣言が必要です。具体的な記述例は以下の通りです。
Option Explicit
Dim num As Integer
Sub サンプル1
num = 1
End Sub
Sub サンプル2
num = 2
End Sub
VBAでは、値を直接記述しなくても定数として定義すれば利用可能です。例えば、何度も利用される値や入力を間違いやすいものを定義すれば、入力ミスをなくすとともに整理されたコードを作成できます。定数を定義する書式は以下の通りです。
Const 定数名 As データ型 = 値
定数名の記載ルールは変数と同様です。アルファベットや漢字、アンダーバーなどが利用できますが、先頭はアルファベットもしくは漢字などの文字でなければなりません。
VBAでは足し算・掛け算などの四則計算や値の比較が可能です。主な演算子は以下の通りです。
演算子 | 概要 |
---|---|
+ | 足し算 |
– | 引き算 |
* | 掛け算 |
/ | 割り算 |
^ | べき乗 |
< | 小さい |
<= | 以下 |
> | 大きい |
>= | 以上 |
= | 等しい |
<> | 等しくない |
And | 論理積 |
Or | 論理和 |
Not | 論理否定 |
VBAでは、文字列同士を結合して1つの文字列にすることも可能です。基本的な方法には、以下のアンパサンド(&)かプラス(+)を使う方法の2つがあります。
文字列1 & 文字列2
文字列1 + 文字列2
ただし、結合するものにより活用する演算子が異なるため注意が必要です。例えば、数値と文字列の結合や、文字列と日付ではプラスの演算子を用いるとエラーになります。
VBAで処理した結果を改行したい場合には、ラインフィードを表す「Chr(10)」やキャリッジリターンを表す「Chr(12)」を利用します。また、以下の定数を利用することも可能です。
定数 | 概要 |
---|---|
vbCrLf | Chr(13) + Chr(10) |
vbCr | Chr(13) |
vbLf | Chr(10) |
VBAでは、特定のワークシートやセルを対象とした情報の取得ができ、対象をオブジェクト、同じ種類のオブジェクトをまとめたものをコレクションと呼びます。主なオブジェクトは以下の通りです。
オブジェクト | 概要 |
---|---|
Application | Excelのアプリケーション全体 |
Workbook | Excelのブック |
Worksheet | ワークシート |
Range | セルや行、列など |
Chart | グラフ |
Dialog | 組み込みダイアログボックス |
コレクションには、例えば以下があります。
オブジェクト | 概要 |
---|---|
Workbooks | 開いているすべてのブック |
Worksheets | ブックに含まれるすべてのワークシート |
最後に、VBAを学ぶ方法を以下に分けて解説します。
VBAの効率的な学習には、インプットとアウトプットの繰り返しが重要です。まずは、オブジェクトや構文・VBAの使い方など基本知識を学習しましょう。基本を身に付ければ、発展的な内容に取り組みやすくなります。
また、インプットを行った後は実際に構文を記述して、アウトプットすることが欠かせません。学んだ内容に基づき、プログラムが思い通り動くかを試しましょう。実際に手を動かして検証しなければ、VBAは身に付きません。
VBAの主な学習方法は以下の4つです。
順に解説します。
書籍を基に学習する方法です。VBAは多くの企業で活用されており需要が高いため、レベルに応じた書籍が多数出版されています。1冊2,000円から4,000円程度で購入でき、比較的コストを抑えて学習できるでしょう。ただ、書籍での学習では、不明点があった際に質問できません。
Youtubeなどの動画を利用して学習する方法です。無料で視聴可能な動画も多く、コストをかけずに学習できます。また、書籍と異なり映像で確認できるため、内容を理解しやすいでしょう。ただ、無料動画では体系的な学習が困難です。また、書籍同様疑問点は自分で解決しなければなりません。
パソコンスクールやプログラミングスクールを利用する方法です。コストがかかる一方で、体系的に学習を進められます。また、質問や不安の解消もしやすく効率的に学べるでしょう。最近は、オンラインスクールも提供されており、時間や場所を問わず学習できます。
資格取得の過程で、書籍などを利用して学習する方法です。体系的な学習が可能で、資格を取得すればVBAに関する知識やスキルを証明できるため、就職・転職活動に役立ちます。VBAに関する資格は「VBAエキスパート」のみですが以下に分かれています。
種類 | 概要 |
---|---|
Excel VBA ベーシック | VBE(マクロ)の基本から、Excelでの作業自動化までが問われます。 |
Excel VBA | スタンダード 検索とオートフィルターやテーブル操作、エラー対策などベーシックよりも高度なマクロ能力が試されます。 |
AccessVBA ベーシック | AccessVBAの基本文法やデータベース・SQLの基礎的な知識が問われます。 |
AccessVBA スタンダード | ファイル操作やADO/DAOによるデータベース操作、プログラミングのトレース・エラー対策など、ベーシックよりも高度で応用的な内容が試されます。 |
VBAとは、WordやExcelなどの機能拡張で活用されるMicrosoft社が開発したプログラミング言語のことです。マクロを設定する際に利用可能で、データの収集や転記、グラフ作成などを自動化できます。上手く活用すれば、業務効率化と生産性の向上やヒューマンエラーの防止、属人化の解消などの効果を得られるでしょう。
VBAを身に付けるには、インプットとアウトプットの繰り返しが重要です。構文などを暗記しただけでは、実務で利用できない可能性があるでしょう。また、VBAはMicrosoft office製品専用のプログラミング言語であるため、活用範囲に限界があります。
弊社SMSデータテックでは、ローコード開発ツールであるPleasanter(プリザンター)の導入支援を行っています。Pleasanterでは、さまざまなWebアプリをスピーディーに開発できるため、高い費用対効果を実現可能です。VBAの対象外業務を効率化した場合には、Pleasanterの活用がおすすめです。