VBAって何?なぜ学ぶの?

Excel業務、なんだか時間がかかるな…
同じようなことを感じたことがある方も多いのではないでしょうか?
毎月同じ表を作ったり、似たような処理を繰り返したりしていると、「これ、自動でできたら楽なのに」と思うことも多いですよね。
そこで登場するのが、Excelの自動化ツール「VBA」です。
いわゆる「Excelのマクロ」というやつです。
VBAを使えば、ボタンひとつで作業を一瞬で終わらせることも可能です。
たとえば、たくさんのデータから条件に合う行だけを残したり、ファイル一覧をパッとまとめたりといったこともできます。
でも…
- プログラミングって難しそう
- 英語やコードを見るだけで拒否反応が…
という声もよく聞きます。
私自身も最初はそうでした。
そこで今回は、ChatGPTを活用しながらVBAに触れてみよう!というテーマで記事を書いてみようと思います。
実は、私は独学で勉強したのですが、VBAの基礎の知識はあります。
そのため、「ChatGPTが出してきたコードって本当に正しいの?」という目線でもチェックしながら進めていきます。
つまり、ChatGPTの便利さと、コードの正しさの両方を一緒に見ていける記事になっています。
「初めてマクロを触ってみたいけど、自信がない…」という方にこそ、この記事が少しでも背中を押せたらうれしいです。
ChatGPTを使えば「はじめてのVBA」でも安心
どこから始めればいい?をChatGPTがサポート
「マクロに興味はあるけど、何から手をつけたらいいのかわからない…」
そんなときに頼れるのが、ChatGPTです。
やりたいことを自然な言葉で伝えるだけで、VBAのコードを生成してくれます。
たとえば「空白セルを塗りつぶすマクロがほしい」と聞けば、数秒でコードとその使い方までこれでもかと教えてくれるんです。
コードの意味も、やさしく解説
ChatGPTのすごいところは、コードを出すだけで終わらないこと。
「この1行は何をしているの?」と質問すれば、文法や構文の意味をやさしく説明してくれます。
さらに「もっとシンプルにできる?」と聞けば、別の書き方も提案してくれます。
まるで、目の前に親切なプログラミングの先生がいるかのようです。
しかもその先生はいつでも、何度でも即レスで回答してくれるんです!
コードの正しさを筆者が検証
とはいえ、AIが書いたコードに不安を感じる方も多いと思います。
「ほんとに正しいの?」「余計な処理が入っていない?」
そんな疑問にお応えするために、この記事では筆者自身(=私)がすべてのコードをチェックしています。
私はVBAをある程度使いこなしているので、ChatGPTが出したコードの正確さ・効率性・実務向けかどうかを目で見て判断しています。
つまり、安心して使えるコードだけを厳選して紹介しているというわけです。
“学ぶ”というより“一緒に作る”感覚で
ChatGPTは「教科書」や「授業」のような存在ではなく、一緒に作業する相棒のような存在です。



失敗しても気軽に聞き直せますし、自分のペースで学べるのも魅力!
「マクロは初めて」「プログラミングは苦手」という方でも、ChatGPTと一緒に取り組めば、きっと「できた!」という達成感を味わえるはずです。
Step1:まずはマクロを動かしてみよう
「マクロって実際どんなもの?」を体験する
VBAというと「コードを書く」というイメージが強いかもしれませんが、最初から難しいことをする必要はありません。
まずは「マクロを実行するってどんな感じ?」を体験してみるところから始めましょう。
Excelには「マクロの記録」という機能があるので、プログラミングなしでも簡単にマクロを作れます。
開発タブを表示しよう
マクロを使うには、まず「開発」タブをExcelに表示する必要があります。以下の手順で表示できます。
- Excelを開く
- 「ファイル」→「オプション」→「リボンのユーザー設定」を開く
- 右側のリストから「開発」にチェックを入れる
- 「OK」をクリック
これで、リボンに「開発」タブが表示されるようになります。
マクロの記録をやってみよう
次は、実際に「マクロを記録」してみましょう。
- 「開発」タブを開く
- 「マクロの記録」をクリック
- 名前はそのままでもOK(例:Macro1)
- OKを押して記録開始
今回はセルC5に「あいうえお」を入力してみました。
この状態で、セルの色を変更したり、文字を入力したりしてみてください。終わったら、「記録終了」をクリック。
すると、今行った操作がVBAコードとして記録されているのです!


記録されたコードを見てみよう
では「開発」タブの「Visual Basic」を開いてみましょう。
すると、自動で作られたVBAコードが表示されているはずです。


記録されたコードを見てみると、
Sub Macro1()
' Macro1 Macro
Range("C5").Select
ActiveCell.FormulaR1C1 = "あいうえお"
Range("C6").Select
End Sub
と書かれています。
「これがマクロなんだ!」と実感できる瞬間です。
ChatGPTと比較してみると?
この記録されたコードをChatGPTに見せて「もっとシンプルにできますか?」と聞いてみるのもおすすめです。
たとえば、上記のコードは下のように短く書ける場合もあります。
■プロンプト
以下のコードをもっとシンプルにできますか?
Sub Macro1()
‘ Macro1 Macro
Range(“C5”).Select
ActiveCell.FormulaR1C1 = “あいうえお”
Range(“C6”).Select
End Sub
ChatGPTからの返答は以下のものです。
Sub Macro1()
Range("C5").Value = "あいうえお"
End Sub
このコードは完璧と言えるでしょう。
マクロの記録ではどうしても無駄なコードが書かれてしまうので、ChatGPTにシンプルなコードにしてもらいましょう。



冗長な記録マクロをシンプルに整理してくれる頼もしい存在!
“記録マクロ”は入り口、ここからが本番
ここまでで「マクロってこうやって動くんだな」という感覚がつかめたと思います。
「あいうえお」と入力するだけでもマクロのコードにできるんです。
とはいえ、「マクロの記録」だけでは複雑な処理はできませんし、効率的なコードになっていないこともあります。
そこで次のステップでは、ChatGPTにコードを書いてもらい、それを実行してみるという体験をしていきます。
「自分のやりたいことをマクロにしてみる」楽しさを味わってみましょう!
Step2:ChatGPTとマクロを書いてみる
自分で書かなくてもOK!ChatGPTに頼んでみよう
ここからは、実際にChatGPTにマクロを書いてもらうステップです。
「コードなんて書いたことない…」という方もご安心ください。
ChatGPTに自然な日本語でお願いするだけで、それをVBAのコードに変換してくれます。
たとえば、こんな感じで質問してみます。
「A列の空白セルだけに“未入力”と表示するマクロを作ってください。」
すると、ChatGPTはコードだけでなく、「どこに貼り付けて、どう実行すればいいか」まで丁寧に教えてくれます。
ChatGPTからの返答に書かれているコードは以下のものでした。
Sub FillBlankWithUnentered()
Dim lastRow As Long
Dim i As Long
' 最終行を取得(A列にデータがある範囲)
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' A2行目から最終行まで繰り返し(見出しがA1にある前提)
For i = 2 To lastRow
If IsEmpty(Cells(i, 1)) Then
Cells(i, 1).Value = "未入力"
End If
Next i
End Sub
また、補足として以下の情報も提供してくれます。
対象範囲は A列の2行目以降です(1行目は見出しと仮定)。
空白判定には IsEmpty
を使っています。数式の空白なども含めたい場合は Trim(Cells(i, 1).Value) = ""
に変えてください。Cells(i, 1)
は「i行目・1列目(A列)」を指します。
ご希望に応じて、範囲をA1からに変更することも可能です。必要であればお知らせください。
実際にコードを貼ってみよう
ChatGPTが出してくれたコードをコピーしたら、次はExcelの「Visual Basic」エディターに貼ってみましょう。
手順は以下の通りです。
1.Excelで「開発」タブ → 「Visual Basic」を開く


2.左側の「挿入」→「標準モジュール」をクリック


3.右側の白い画面に、ChatGPTのコードをペースト


4.「▶(再生)」ボタンを押して実行!


ChatGPTとの会話がそのまま学びになる
ChatGPTを使っていると、「コードをもらって終わり」ではなく、「なぜこの書き方なのか?」「他の方法はあるのか?」といった学びの会話が自然と生まれます。
これが、書籍や動画では得られないポイント。
質問すればするほど理解が深まり、「気づいたらマクロに強くなってた!」なんてこともあるかもしれません。
ここまでで、「ChatGPTと一緒にマクロを書く」流れはつかめたと思います。
次のステップでは、実際の仕事でも役に立つようなちょっと便利なマクロをChatGPTにお願いしてみましょう。



小さな自動化が、きっと大きな時短につながります!
Step3:便利マクロの応用例
「あったら便利」が、すぐカタチになる
ここからは、実務で役立つ“ちょっと便利”なマクロをChatGPTにお願いして作ってみましょう。
VBAって、難しいことをしなくても「小さな自動化」ができるだけで、日々の作業がすごく楽になります。
ここでは、私が実際にChatGPTに相談して作成したマクロを紹介します。
初心者向けですが、効果はバツグンです。
空白セルに「未入力」と表示するマクロ
アンケート結果や出席表など、「空欄=ミスかも?」という表を扱うときに簡単なコードをChatGPTは作ってくれます。
以下の出欠表があるとします。


必ず出欠の〇×を確認したいときに、空欄だとどっちなんだろうと思ってしまいますよね。
ChatGPTにお願いした内容は以下のものです。
A列に人物名、B列に出欠のデータが入った表があります。見出しは2行目です。
B列には〇か×か記入してもらいますが、空欄となっている部分を確認したいので表のB列の空白セルに「未入力」と赤字で入れるマクロを作ってください。
他に必要な情報があれば質問してください。
なるべく詳細に表の内容を伝えることでChatGPTが理解しやすくなりますので、丁寧に言語化してみましょう。
また、ChatGPTが適当なマクロを作成しないように、「必要な情報があれば質問して下さい」と入れると良いと思います。
生成されたコードは以下のものです。
Sub FillBlankWithUnentered()
Dim lastRow As Long
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet
' A列にデータがある最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' B列の空欄に「未入力」を赤字で入力(3行目以降)
For i = 3 To lastRow
With ws.Cells(i, "B")
If IsEmpty(.Value) Then
.Value = "未入力"
.Font.Color = RGB(255, 0, 0) ' 赤字
End If
End With
Next i
End Sub
ChatGPTは「どの列に適用するか」「対象範囲はどこか」なども聞けば調整してくれます。
コードの意味が分からなくても、「この行は何してるの?」と聞けばちゃんと教えてくれます。
このマクロを実行するとこうなります。


もしこの表の8行目以降に行が追加されてもこのコードであれば問題ありません。
変数を使用しているコードなのでChatGPTは最適なコードを出力してくれていますよ!
他にも…
ChatGPTは他にも便利なコードをすぐに生成してくれます。
社内共有フォルダや定例レポートの一覧をExcelでまとめたいときに便利です。
「指定したフォルダのファイル名を、Excelのシートに一覧で表示するマクロを作って」
と依頼するのもいいでしょう。
また、詳細にフォルダの情報や出力してほしい情報などを書くとよりイメージに近いコードを出力してくれます。
売上データや出荷データから「ある地域だけ非表示にしたい」といった条件付きフィルターが必要なときに便利なマクロです。
たとえば、B列に「関東」「関西」「東海」などと入力されていて、「関東以外は非表示にする」マクロがすぐ作れます。
「B列が“関東”以外の行を非表示にするマクロを作って」
もちろん逆パターンや、複数条件にも応じて書き換えられます。
便利なマクロをChatGPTと一緒に作ることで、「このコードの書き方、なるほど!」と理解が深まっていきます。
しかも、どんな業務で応用できそうか?を考えるだけでも、仕事の改善アイデアがどんどん湧いてくるはずです。
また、これらのマクロはすべて、私がChatGPTから得たコードを実際に動かし、内容も確認済みのものです。
中には「少し書き直した方が良いな」と感じたコードもありますが、そういった場合はよりシンプルで実務的な形にリライトして紹介しています。
「AIの出すコードって本当に使えるの?」と思っている方にも、自信を持っておすすめできる内容です。
ただ、自分でもマクロが正しいか検証したいという方には以下の書籍をお勧めします。
初心者でも非常にわかりやすく書かれていますし、実際に手を動かしながらマクロを学んでいくことができる1冊です。
Excel VBA塾【動画✕本で学ぶ! 】 ~初心者OK! 仕事をマクロで自動化する12のレッスン
よくあるエラーとChatGPTの使い方
マクロを実行したら「エラー!」…よくあることです
「ChatGPTが出してくれたマクロをそのまま貼ったのに、エラーが出た!」
これは、誰でも最初は経験することなので安心してください。
VBAでは、ちょっとしたミスや思わぬ条件の違いでエラーが出ることがあります。
たとえば:
- 範囲が存在しない(空のセルを参照している)
- 変数の宣言漏れ
- セルに何も入っていないのに操作しようとしている
- ファイルやフォルダのパスが違う
といった小さなつまずきが原因になることが多いです。
そんなときはエラー内容をそのまま聞いてみよう
エラーが出たときに見るべきポイントは、「エラーメッセージ」と「該当するコード行」です。
たとえば、こんなエラーが表示されたら、
このメッセージをそのままChatGPTにコピーして送るのがおすすめです。
「実行時エラー ‘9’:インデックスが有効範囲にありません」と出ました。どう直せばいいですか?
こうすると、ChatGPTはどこが怪しいか、どんな理由で出ているのかを教えてくれます。
さらに、「あなたが貼ったコード」を一緒に添えてあげると、より的確にアドバイスしてくれます。
ChatGPTとの“会話”で直せることが多い
ChatGPTは、いきなり完璧なコードを出すというよりも、一緒にトライ&エラーしていくタイプの相棒です。
- エラーが出たら、「この部分が原因かも?」と提案してくれる
- 「もっと簡単な方法で書けない?」と相談もできる
- 「実務ではこう使いたい」と伝えると、柔軟に修正してくれる
というように、修正しながら完成させていく過程こそが、ChatGPTの強みです。
私自身も、最初のうちはChatGPTに「何回も同じような質問」をしていました。
でもそれでいいんです。むしろ、会話を重ねるごとに理解が深まり、VBAの感覚もつかめてきます。
たとえばこんなやり取りでもOK
このように、ChatGPTはまるで親身な先輩のように、段階的にサポートしてくれます。
ChatGPTはVBA学習の最強の相棒
自分で全部覚えなくていい時代へ
これまでVBAを学ぶには、本を読んだり、検索したりしながらコードを書いて、何度も試して…という根気が必要でした。
でも今は、ChatGPTというともに学ぶ相棒がいます。
わからないことはすぐ聞ける。やりたいことを言えばコードにしてくれる。
しかも、その意味まで教えてくれる。
そんな存在がいるなら、すべてを自分で覚えなくても、まずは動かしながら学べばいいと思えるはずです。
VBAは、一つのマクロで日々のルーチン作業を数分短縮してくれます。
それが積み重なれば、業務の効率も、自分の時間も、きっと大きく変わっていきます。
ChatGPTと一緒に、VBAをもっと気軽に、もっと便利に活用していきましょう!
※マクロを自分でももっと勉強してみたいという人はリスキリングサイトも活用するのも良いと思います。


コメント