VBA入門講座!初心者向けに概要や使い方、基本文法と学習方法を解説

コラム
#IT基礎知識
#業務効率化
#自動化
#運用自動化
VBA 入門

VBAの入門編を知りたい方はいませんか?
VBAとは、ExcelなどのMicrosoft office製品で活用できるプログラミングコードのことです。VBAでマクロを設定すれば、データの収集や転記、グラフ作成などを自動化できます。業務効率化やヒューマンエラーの防止などに役立つでしょう。

本記事では、VBAの概要やできること・できないこと、基本操作・構文について詳しく解説します。VBAの入門編について知りたい方、業務を効率化したい方は、ぜひ参考にしてください。

VBAとは

VBAとは

VBA(Visual Basic for Applications)とは、WordやExcelなどの機能拡張で活用されるMicrosoft社が開発したプログラミング言語のことです。以下のように製品ごとに呼ばれるケースもあります。

  • Excel VBA:Excelで用いるVBA
  • Word VBA:Wordで用いるVBA
  • PowerPoint VBA:PowerPointで用いるVBA
  • Access VBA:Accessで用いるVBA

Microsoft office製品でのルーティンワークを自動化することが可能で、業務効率化に役立ちます。

ここからは、VBAに関する以下の事項について解説します。

  • マクロとの違い
  • 活用するメリット

マクロとの違い

マクロとは、Excelで行う操作を自動化する仕組みのことです。例えば、データの転記やコピーをワンクリックで実施可能です。マクロの設定には、録画した再生機能の使用とVBA活用の大きく2種類が存在します。マクロの記録機能は簡単に活用可能な一方で、対応できない作業も存在します。VBAを活用すれば、マクロの記録で自動化できない業務の処理も可能です。

なお、マクロの詳細や組み方、業務でそのまま使えるコードは以下をご覧ください。
⇒マクロの基礎を解説!できること・できないことや活用方法、注意点まとめ
⇒マクロとは?マクロによる業務効率化方法やVBAとの違いも紹介
⇒マクロの組み方とは?VBAとの違いやサンプルコードについて紹介
⇒便利なマクロ一覧45選!マクロの組み方やそのまま使えるコードを紹介

活用するメリット

VBAを活用する主なメリットは以下の通りです。

  • 業務効率化と生産性の向上
  • ヒューマンエラーの防止
  • 属人化の解消
  • 安価なコスト

VBAにおける最大の魅力は業務効率化と生産性の向上です。人間が行っているルーティンワークを自動化可能で、売上の向上やコスト削減に役立つコア業務に集中できるでしょう。また、設定通りに処理が実行されるため、ヒューマンエラーの防止や属人化の解消にも役立ちます。

別システムを導入する必要がなく、追加コストがほとんどかからない点も魅力です。近年は便利なシステムが多数開発・提供されていますが、利用する場合には初期費用や毎月のランニングコストが発生します。

VBAでできること・できないこと

VBAでできること・できないこと

VBAは便利ですが万能ではありません。ここからは、以下を解説します。

  • VBAでできること
  • VBAでできないこと

VBAでできること

VBAで自動化できる主な作業は以下の通りです。

  • 四則演算や検索、集計などのデータ処理
  • データの出入力や転記
  • データ取得
  • グラフ作成
  • 書類の作成と印刷
  • Microsoft Office製品間の連携

VBAはデータの集計や転記、取得などの定型業務を得意としています。膨大なデータを手作業で処理する必要はありません。ExcelデータのPDF変換を自動化することも可能です。Microsoft Office製品間であれば連携もできるため、多彩な業務で役立つでしょう。

VBAでできないこと

さまざまな作業で活用できるVBAですが、以下は不得意です。

  • 膨大なデータの処理
  • 文字イメージの認識
  • VBAに対応していないツールとの連携
  • システム開発

例えば、Excelではワークシートの最大容量が決まっており、その上限を超えるデータへの対応はVBAを活用してもできません。また、画像を認識してテキストデータに変換するなどの処理も不可能です。

VBAはMicrosoft office製品専用のプログラミング言語です。VBAと親和性がないアプリケーションとの連携や、システム開発も苦手としています。Microsoft office製品専用ではできない業務の処理を実施したい場合には、他のツールや言語を活用しましょう。

VBAの基本的な使い方

VBAの基本的な使い方

続いて、ExcelにおけるVBAの基本的な使い方を以下のステップに分けて解説します。

  1. 開発タブを表示する
  2. 標準モジュールを作成する
  3. コードを記述する
  4. 実行と保存を行う

1.開発タブを表示する

VBA 手順①

VBAの記述に関する項目は「開発タブ」の中にあります。ただ、初期設定では開発タブが表示されないため、開発タブを表示させましょう。
まず、Excelの「ファイル」タブをクリックして、メニューにある「その他」を選んだ後に「オプション」をクリックします。オプションメニューが表示された後に「リボンのユーザー設定」を選び「開発」にチェックを付け「OK」をクリックします。

VBA 手順②

2.標準モジュールを作成する

続いて、標準モジュールを作成します。標準モジュールとは、全てのシートから使用可能な変数や関数を宣言するファイルのことです。
標準モジュールを作成するには、開発タブにある「Visual Basic」をクリックします。Visual Basicのポップアップが表示されたら、上部のメニューバーにある「挿入」を選び「標準モジュール」をクリックします。

3.コードを記述する

標準モジュールを作成すると「Module1」が表示されます。

VBA 手順③

上記のModule1に「Sub」と「End Sub」で囲んだコードを記述します。

4.実行と保存を行う

コードを記載したら、問題なく動くかを確認しましょう。実行時は、上部にある緑の三角ボタンを押すだけです。

VBA 手順④

問題なくプログラムが実行されたら保存します。マクロを設定したExcelファイルを保存する際には、ファイルの種類で「マクロ有効ブック」を選択しましょう。

VBAの基本文法

VBAの基本文法

続いて、VBAにおける以下の基本文法を解説します。

  • Subプロシージャの記述
  • プログラムへのコメント
  • 長いコードの改行
  • 変数の宣言と値の代入
  • 変数宣言の強制
  • VBA・変数のデータ型の指定
  • 変数のスコープ
  • 定数の定義
  • 演算子の活用
  • 文字列の結合
  • VBAの改行
  • オブジェクトとコレクション

Subプロシージャの記述

Subプロシージャとは「Sub」と「End Sub」で囲まれた以下構文のことです。

Sub プロシージャ名()
※コードを記載
End Sub

マクロは、SubとEnd Subに挟まれたコードに従い処理を実行します。プロシージャを識別するため、Subの後にプロシージャ名を記載しましょう。プロシージャ名には、アルファベットやひらがな、漢字などが活用できます。数字も利用可能ですが、プロシージャ名の先頭には利用できません。また、記号やスペースの活用も不可です。

プログラムへのコメント

VBAにはコメントを記述する機能が実装されています。後でプログラムを確認した際参考になるため、利用すると良いでしょう。
プログラム内にコメントを記述する場合には、シングルクォーテーション(’)を用います。シングルクォーテーション後に記述された文字列は、行末までがコメントとなります。コメントは書かれていないのと同じ扱いとなり、プログラムの実行に影響を与えません。

長いコードの改行

VBAでは、一行が一つの処理として扱われます。途中でコードを改行するとエラーが発生するため、長いコードであっても一行での記述が基本です。
ただし、半角スペースの後にアンダーバー(_)を記述すれば、処理が次の行にもまたがって実行されます。長いコードの改行時には、半角スペースとアンダーバーを活用しましょう。

変数の宣言と値の代入

変数とは、計算途中の値などを一時的に保存する入れ物のことです。VBAでは、変数を用いる前に一度宣言することが推奨されています。変数の宣言は以下の通り記述します。

Dim 変数名

変数にはアルファベットや漢字、アンダーバーなどを活用できます。ただし、先頭はアルファベットもしくは漢字などの文字を用いなければなりません。

宣言した変数への値代入は以下の通りです。

Dim 変数名
変数名 = 値

左側に変数名、右側に値を記述してイコール(=)でつなげます。

変数宣言の強制

VBAでは、変数の宣言が推奨されていますが、宣言しなくてもエラーは発生しません。エラーを発生させるには、モジュールの先頭に「Option Explicit」を記載します。なお、以下の手順を踏めばOption Explicitを自動挿入可能です。

  1.  Visual Basic Editor の「ツール」をクリック
  2. メニューの「オプション」をクリック
  3. 「編集」の「変数の宣言を強制する」にチェックボックスを付け「OK」をクリック

VBA・変数のデータ型の指定

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の改行

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の効率的な学習には、インプットとアウトプットの繰り返しが重要です。まずは、オブジェクトや構文・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の活用がおすすめです。

まずはお気軽にご相談ください
お問い合わせフォーム

おすすめイベント・セミナー 一覧へ

情シス応援パビリオンに出展いたします!
イベント・セミナー

この度、情報システム部門(情シス)を支援するために開催される「情シス応援パビリオン」に出展することが決定いたしました! 情報システム担...