皆さんプログラミングしていますか?
プログラミングなんて簡単!・・とは言いませんが、これだけITが発展した現代においては一定の知識を持っていて損はないですし、業務効率の代名詞と言える”システム化”を担当するには必須レベル
IT職ではない人でも身近でトライ&エラーし放題、身に着けたスキルがすぐに活かせるEXCELとVBAがいいんじゃないかと言うことで今さらではありますがVBA入門を私なりにまとめます
VBAを始める前に
VBAを始める前にまずVBAの概要とExcelの準備です
VBAとは
VBA(Visual Basic for Applications)は、Microsoft 365・Office製品(Excel、Accessなど)で使用できるプログラミング言語です
よくVBAとマクロの違いみたいな話を見ますがマクロは機能名でVBAはその中身って感じで会話の中では同じものとして扱って大丈夫かなと
VBAを使いこなせば、これまで何時間もかかっていた作業がボタン一つで一瞬で終わる、なんてことも夢ではありません
- 定型的なメールの作成・送信
- 毎月のレポート作成
- 大量のデータ整形・転記
- ブラウザを自動操作してエクセル情報の転記
開発者タブを表示しよう
ExcelでVBA始めるならまず開発タブを表示しましょう
正直慣れるとVBEの画面は”Alt+F11“で開くしマクロは”Alt+F8“で実行しちゃうので使う頻度は減りますが最初はあったほうが便利です
- 「ファイル」タブ → 「オプション」をクリック
- 「リボンのユーザー設定」を開く
- 右側の「メインタブ」の一覧から「開発」にチェックを入れ、「OK」をクリック

VBAで押さえておきたい基本
VBAを学ぶ上で、最低限知っておきたい基本的な概念をいくつか紹介します
最初は難しく感じるかもしれませんが、深堀は別でやりますので今は「こういうものがあるんだな」くらいの気持ちで読み進めてください
変数と定数
プログラミングでは、データ(数値や文字列など)を一時的に保存しておくための「箱」のようなものを使いますが、この箱のことを変数や定数と呼びます
- 変数: 中身を自由に入れ替えられる箱
- 定数: 一度入れたら中身を変えられない箱
Sub test()
Const tax_rate As Double = 0.1 '---税率
Dim price_excluding_tax As Long '---税抜き価格
Dim price_including_tax As Long '---税込み価格
price_excluding_tax = 1980
price_including_tax = price_excluding_tax * (1 + tax_rate)
Debug.Print (price_including_tax)
End Sub
データ型
変数や定数には、どんな種類のデータを入れるかをあらかじめ決めておく必要があり、これをデータ型と呼びます
例えば、数値を扱うのか、文字を扱うのか、日付を扱うのか、といった区別です
データ型 | 内容 | 例 |
---|---|---|
Long | 整数 | 1, 100, -50 |
String | 文字列 | “こんにちは”, “Excel” |
Date | 日付・時刻 | 2025/08/30 |
Boolean | 真偽値 (True/False) | True, False |
条件分岐、ループ処理などのフロー制御
プログラムは基本的に上から下へ順番に実行されますが、フロー制御を使うことで状況に応じて処理の流れを変えることができます
- ループ処理 (For, Do Whileなど): 同じ処理を何度も繰り返したい場合に使います
例えば「○○を10回繰り返す」「△△という条件が満たされるまで繰り返す」といった処理が可能です - 条件分岐 (If): 「もし○○ならAの処理、そうでなければBの処理をする」というように、条件によって処理を分けます
' A1~A10のセルの中で300以上の数字だったら文字を赤くする
Sub test()
Dim i As Long
For i = 1 To 10
If Cells(i, 1).Value >= 300 Then
Cells(i, 1).Font.Color = RGB(255, 0, 0)
End If
Next
End Sub
メインプロシージャとサブプロシージャ
VBAでは、一連の処理のまとまりをプロシージャと呼びます
機能や仕組みではなく、役割や考え方みたいな位置づけなので必ずしもこの二つが必要ってわけではなく簡単なプログラムならプロシージャー1つなんてことも多々ありますし、サブプロシージャーのさらにサブプロシージャーを作ったりすることもあります
車でいうとメインプロシージャが車の組み立て、サブプロシージャーが各部品の作成のイメージですね
- メインプロシージャ: 一連の処理を始めて完了させる主たるプログラム
- サブプロシージャ: 特定の処理(例えば、ボディを作る、エンジンを作る)を部品として独立させたプログラム※メインプロシージャから呼び出して使います
Sub MainProcedure()
Debug.Print ("これがメインプロシージャーです")
Call SubProcedure1
Call SubProcedure2
End Sub
Sub SubProcedure1()
Debug.Print ("これがメインプロシージャー1です")
End Sub
Sub SubProcedure2()
Debug.Print ("これがメインプロシージャー2です")
End Sub
可読性の重要性
VBAは自分だけでなく、他の人がコードを読む(または将来の自分が見返す)可能性もあります
誰が見ても分かりやすい、可読性の高いコードを書くことは非常に重要です
インデントについて
インデントとは、行頭の字下げのことで処理の塊(ブロック)を視覚的に分かりやすくするために行います
If文やFor文などフロー制御の中の処理は、インデントを下げるのが一般的です
処理の塊で行頭にタブキーかスペース(一般的には半角スペース×4)を付けます
' 悪い例
If Range("A1").Value > 10 Then
MsgBox "10より大きいです"
End If
' 良い例
If Range("A1").Value > 10 Then
MsgBox "10より大きいです"
End If
変数などの命名規則について
変数やプロシージャの名前は、その役割がひと目で分かるように付けることが大切です
例えば、”a"
や”b"
のような無意味な名前ではなく、"userName"
(ユーザー名)や"calculateTotalPrice"
(合計金額を計算する)のように一見して意味が分かるようにすることが望ましいです
書き方にも規則性がありまして”定数は全て大文字にする”、”プレフィックスでデータ型を示す”、”単語を特定の文字で繋ぐ”などなど言語や時代によって変化はありますが少なくとも一つのプログラムの中では一貫したルールにすべきです
- キャメルケース
- スネークケース
- ケバブケース
モジュールの種類
VBAのコードを記述する場所をモジュールと呼びます
モジュールにはいくつか種類がありますが、初心者がまず覚えておくべきなのは以下の2つです
- 標準モジュール: 一般的なプロシージャ(SubやFunction)を記述する、最も基本的なモジュールです
- クラスモジュール: 小規模なプログラムになりがちなVBAの世界では見かける頻度は低いですが、いわゆるオブジェクト指向という考え方に基づいたもので、より複雑で大規模なプログラムを作る際に役立ちます。
まとめ
今回は、VBAの魅力とその基本的な概念についてお話ししました。最初は覚えることが多くて大変に感じるかもしれませんが、一つ一つは決して難しいものではありません。
VBAを学ぶ最大のメリットは、日々の業務に直結するスキルであるということです。学習したことがすぐに実践で活かせ、成果が目に見えやすいので、モチベーションを維持しやすいのも特徴です。
このブログでは、今後もVBAの具体的な書き方や便利なテクニックをどんどん紹介していきます。ぜひ、次回の記事もチェックして、退屈な繰り返し作業から解放され、より創造的な仕事に時間を使えるようになりましょう!✨
何か聞きたいことがあれば お問い合わせページ かLINEで友達追加してお気軽に連絡してください
※普通の会社員なのでレスポンスはお察しください🙇
👇👇👇QRを読み取る場合はこちら
コメント