日々の業務の中には、繰り返し行う定型業務も含まれているでしょう。VBAを使えば、そんな定型業務を自動化できます。
本記事では、VBAの基本コードを紹介しながら、実務でも使える処理の実装方法について解説します。VBAを使った自動化に興味のある方は、ぜひ参考にしてみてください。
VBAとは
VBA(Visual Basic for Applications)は、Microsoft Office製品に搭載されているプログラミング言語です。主にExcelの定型作業の自動化に使われています。
混同されやすいマクロとRPAとの違いについて見ていきましょう。
マクロとの違い
マクロとは、操作を記録して自動再生する機能を指します。例えば、セルに入力した値をコピーして別の場所に貼り付ける操作をマクロに記録すれば、ボタン一つで同じ処理が何度でも可能になります。
一方、VBAはそのマクロの中身を自分で編集したり、より複雑な処理を実装したりできるプログラミング言語です。つまり、マクロを作成する手段としてVBAが使われます。
また、VBAでできること・できないことについては、以下の記事で詳しく解説しています。
RPAの違い
RPAは、人間の代わりにソフトウェアロボットが提携業務を自動的に行ってくれるシステムです。自動化ではVBAと共通していますが、RPAの方がさまざまなツールと連携ができるのが特徴です。
ただし、導入には初期費用がかかることが多いため、Office製品に標準搭載されているVBAとはコスト面でも異なります。
有名なRPAツールには、Excelと同じMicrosoft社のPower Automateがあります。
VBAの基本操作
VBAを使う流れは、以下のとおりです。
- 開発タブを表示する
- VBAエディターから標準モジュールを追加する
- コードを記述して実行する
これらの基本操作を行う流れについて見ていきましょう。
①開発タブを表示する
VBAを使うには、開発タブを表示する必要があります。まず、リボンの上で右クリックして「リボンのユーザー設定」を開きましょう。

続いて、右側のリストから「開発」にチェックを入れて「OK」をクリックすると、リボンに開発タブが追加されます。

②VBAエディターから標準モジュールを追加する
開発タブから「Visual Basic」を開きます。

続いて、挿入メニューから「標準モジュール」を選択しましょう。標準モジュールでは、VBAの共通コードを記述していきます。

③コードを記述して実行する
標準モジュールにVBAコードを記述します。記述したコードは、F5キー、もしくは実行ボタンをクリックすることで実行できます。

また、VBAの基本的な使い方をプロから教わりたい場合は、講座の利用がおすすめです。Excelマクロ・VBAセミナーなら、VBAを使った業務効率化の手順について学べます。
VBAの基本コード〜基礎編〜
VBAでまず覚えたい基本コードは以下のとおりです。
- サブルーチンの定義
- 変数の宣言
- 条件分岐
- 繰り返し処理(For)
- 繰り返し処理(Do While)
これらの基本コードについて見ていきましょう。
①サブルーチンの定義

サブルーチンは、VBAの処理をまとめたコードの集まりです。
実行コード
End Sub
上記のようにSubとEnd Subで囲むことで、一連の処理が定義されます。
②変数の宣言

変数とは、データを一時的に保存しておく箱のようなものです。
Dimステートメントで変数を宣言します。
Dim Tax As Double
Dim Price As Double
Dim Total As Double Tax = 1.1 ‘ 消費税率(10%)
Price = 1000 ‘ 税抜価格
Total = Price * Tax ‘ 税込価格の計算 MsgBox “税込価格は ” & Total & ” 円です”
End Sub
上記のように消費税や税抜き価格を変数として定義しておくことで、値が変更になったときでも柔軟に対応が可能です。
③条件分岐(If文)

IF文は、条件に応じて処理を分岐させたい場合に使用します。
If Range(“A1”).Value >= 100 Then
MsgBox “達成”
Else
MsgBox “未達成”
End If
End Sub
この例では、セルA1の値が100以上かどうかで、メッセージを切り替えています。
④繰り返し処理(For)

繰り返し処理は、同じ処理を何度も行うときに使われます。For文は繰り返し回数が決まっている場合の構文です。
Dim i As Integer
For i = 1 To 5
MsgBox i
Next i
End Sub
このコードでは、MsgBoxに数字を表示する処理を1〜5まで繰り返しています。
⑤繰り返し処理(Do While)

Do While文は、条件が満たされている間のみ、処理を繰り返します。
Dim i As Integer
i = 1
Do While i <= 5
MsgBox i
i = i + 1
Loop
End Sub
Do Whileは繰り返し条件を柔軟に設定できるため、条件が変動するような処理に向いています。
また、VBAでエラーが出たときの対象法や、そのほか実務で使える基本コードについて知りたい方は、以下の記事も参考にしてみてください。
VBAの基本コード〜応用編〜
VBAを使ってセル操作ができる以下のような応用的なテクニックを紹介します。
- セルに値を入力
- セルの値を削除
- セルの値をコピー/貼り付け
これらの応用的な基本コードについて見ていきましょう。
①セルに値を入力

指定したセルに値を入力するコードです。
Range(“A1”).Value = “こんにちは”
End Sub
このコードを実行すると、A1セルに「こんにちは」という文字列が出力されます。
②セルの値を削除

セルに入力された値を削除するコードです。
Range(“A1”).ClearContents
End Sub
このコードでは、A1に入力された値を削除しています。また、セルの値を削除するのに使えるメソッドには以下のようなものがあります。
| メソッド | 内容 |
| .ClearContents | 値のみを削除 |
| .Clear | 値・書式・背景色すべて削除 |
| .Value | = “”で値だけ空欄にする |
用途によって使い分けましょう。
③セルの値をコピー/貼り付け

セルに入力された値をコピーし、別のセルに貼り付けるコードです。
Range(“A1”).Copy Destination:=Range(“B1”)
End Sub
このコードでは、A1の値をB1にコピー&ペーストしています。
また、VBAの基本的な使い方を基礎から学びたい場合は、講座の利用がおすすめです。Excelマクロ・VBAセミナーなら、VBAを使った自動化処理について学べます。
VBAの基本コード〜実践編〜
VBAの基本コードを使って、実務でも使える処理のサンプルを紹介します。
- グラフの自動作成
- 複数シートのデータ集約
- 定型業務の自動化
- ファイルの自動保存
- メールの自動送信
これらの処理が実装できるコードについて見ていきましょう。
①グラフの自動作成

VBAを使えば、データをもとにグラフを自動で作成できます。以下のコードでは、セル範囲B2からF6のデータを使って、折れ線グラフを生成します。
With ActiveSheet.Shapes.AddChart.Chart.
ChartType = xlLine
.SetSourceData Source:=Range(“B2:F6”)
End With
End Sub
手作業でグラフを作る手間を省けるため、レポート作成の効率化が図れます。
②複数シートのデータ集約

複数のワークシートに分かれたデータを、1つの「集約シート」にまとめるコードです。以下のようにループ処理を使って、2枚目以降のシートからデータをコピーします。
Dim i As Long
For i = 2 To Sheets.Count
With Sheets(i).Range(“A2”).CurrentRegion
.Copy Destination:=Sheets(“集約シート”).Cells(Rows.Count, “A”).End(xlUp).Offset(1, 0)
End With
Next
End Sub
大量データの整理に役立つテクニックです。
③定型業務の自動化

毎日繰り返すような定型作業もVBAで自動化できます。以下の例では、B列の3〜5行目に今日の日付を入力しています。
Dim i As Integer
For i = 3 To 5
Cells(i, 2).Value = Date
Next i
End Sub
簡単なループ処理で、一度に行う入力の手間を大幅に削減できます。
④ファイルの自動保存

以下のコードをThisWorkbookモジュールに記述すれば、ブックを閉じるときにファイルが自動保存されるようになります。
ThisWorkbook.Save
End Sub
保存忘れを防止できるので、導入しておくと日々の業務を安心して行えます。
⑤メールの自動送信

Outlookと連携して、VBAから自動でメールを送ることも可能です。以下はその基本的なコードです。
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject(“Outlook.Application”)
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = “sample@example.com”
.Subject = “サンプルメール”
.Body = “サンプルです。”
.Send
End With
End Sub
報告メールを自動送信する場面などで活用できます。
VBAの基本を効率的に学ぶなら

VBAの基本を学ぶなら、講座でプロから教わるのがおすすめです。Excelマクロ・VBAセミナーでは、VBAの基本的な構文から、実際に自動化を行う流れまでを網羅的に学べます。
独学ではなにから始めたらよいのかわからないという方は、ぜひ本セミナーをチェックしてみてください。
セミナー名 Excelマクロ・VBAセミナー 運営元 GETT Proskill(ゲット プロスキル) 価格(税込) 27,500円〜 開催期間 2日間 受講形式 対面(東京・名古屋・大阪)・ライブウェビナー・eラーニング
VBAでよくある質問
VBAでよくある質問をまとめました。回答を見ていきましょう。
VBAは、現時点で廃止の予定はありません。ただし、JavaScriptをベースに作られたOfficeScriptsの登場により、徐々に移行が進む可能性があります。
それでも、具体的なアナウンスはないため、学習は継続しましょう。
VBAの基本コードについてのまとめ
今回は、VBAの基本コードについて紹介しました。難しいイメージのあるVBAですが、基本構文を理解できれば、応用スキルにもすんなりチャレンジできるでしょう。
初心者は、まず簡単なコードを真似しながら書いてみるのがおすすめです。実行と修正を繰り返しながら、VBAの書き方に慣れていきましょう。