ChatGPTと学ぶExcelマクロ入門:初心者向けVBA実例付き

Excel
この記事は約9分で読めます。

「Excelマクロって難しそう…」「VBAって何から勉強すればいいのか分からない…」

そんな不安を抱えているあなたにこそ、ChatGPTを使った学習スタイルをおすすめしたいんです。

ChatGPTは、あなたの質問に合わせて丁寧に解説し、目的に応じて必要なVBAコードを生成してくれる対話型の先生のような存在。

専門書やネットの断片的な情報に頼らず、あなたの理解度にあわせて“会話しながら”学習を進められるのが最大の魅力です。

本記事では、VBA初心者でも安心して取り組めるよう、以下のような内容をわかりやすく解説します:

  • 初心者がつまずきやすいポイントとChatGPTでの解決法
  • 実際のプロンプト例とその出力コード
  • うまく動かないときのエラー対応のコツ
  • おすすめの学習ステップとプロンプトテンプレート集

ChatGPTと一緒なら、「マクロって難しい」というイメージが、「これならできそう!」に変わるはずです。

なぜVBAは難しく感じる?初心者がつまずきやすいポイントとは

Excel VBAに対して「ハードルが高い」と感じる理由は、次のような点にあります:

  • どこにコードを書けばいいのか分からない
  • 構文ルールが英語で難しく感じる
  • 参考にしたコードが自分の環境では動かない
  • エラーが出ても、どこを直せばいいのか分からない

さらに、ネット上の情報は断片的で、書籍は初学者にはとっつきづらいことも多いです。

こうした悩みに対して、ChatGPTはまさに「何でも質問できる身近な先生」のような存在です。

「この処理をしたいけど、どう書けばいい?」と日本語で尋ねるだけで、あなたの目的に合ったコードや説明をその場で返してくれます。

次のセクションからは、実際にChatGPTをどう活用するか、具体的なプロンプト例と出力例を交えながら紹介していきます。

ChatGPTがVBA学習に向いている3つの理由

VBAは独学ではつまずきやすい領域ですが、ChatGPTを使うことで次のような利点があります:

1. 自然文で質問できる

「この列をループして処理したい」「条件付きでセルに色をつけたい」など、日常の言葉で質問するだけで、ChatGPTはVBAコードとその意味を教えてくれます。

2. 理解レベルに合わせた説明ができる

初心者には「これは繰り返し処理です」と丁寧に解説し、中級者には「For Each文の応用として使えます」といったレベルに応じた補足も可能です。

3. その場で修正や追加指示ができる

「このコードに条件分岐を加えて」「日付の表示形式を変えて」といったリクエストにも即対応。試行錯誤を対話形式で進められる点が大きな魅力です。

このように、ChatGPTは学習の進度や目的に応じて柔軟にサポートしてくれる“マンツーマンの先生”のような存在です。

ChatGPTに聞いてみよう!実践プロンプトと出力例

ここでは、実際にChatGPTにVBAのコードを作ってもらう際のプロンプト例と、その出力例を紹介します。

シンプルなプロンプト例①:メッセージ表示

「Excelの起動時に“こんにちは”と表示するマクロを教えてください」

ChatGPTの出力例

Sub Workbook_Open()
    MsgBox "こんにちは"
End Sub

このコードは、Excelブックが開かれたときに「こんにちは」とポップアップ表示するシンプルなマクロです。

複数行プロンプト例②:セルを条件付きで色分け

以下の処理を行いたいです:
1. A列の各セルをチェック
2. 値が100以上なら黄色
3. 100未満なら白に塗り直す
この処理を行うVBAコードを生成してください。

ChatGPTの出力例

Sub HighlightValues()
    Dim cell As Range
    For Each cell In Range("A1:A100")
        If IsNumeric(cell.Value) Then
            If cell.Value >= 100 Then
                cell.Interior.Color = vbYellow
            Else
                cell.Interior.ColorIndex = xlNone
            End If
        End If
    Next cell
End Sub

ChatGPTは、複数行にまたがる自然文の要件も正確に解釈して、実行可能なコードとともにロジックも補ってくれます。

このように、ただコードを吐き出すだけでなく、処理内容を日本語で明確に伝えれば、高精度でVBAコードを構築してくれるのが大きな魅力です。

動かない?うまくいかない?そんな時もChatGPTに相談

VBAを書いてみたけど、動かない・エラーが出る…。そんなときもChatGPTは頼れる味方です。

例①:エラーの内容を伝える

先ほどのコードを実行したら「型が一致しません」というエラーが出ました。どうすれば直せますか?

ChatGPTの返答例

「“型が一致しません(Type Mismatch)”は、変数の型がデータと合わない場合に発生します。もしセルに文字列が混じっている場合、数値型の処理でこのエラーが出ることがあります。IsNumeric()でチェックを入れると回避できるでしょう」

例②:コードを少し変更してもらう

このコードに「条件に一致したセルの背景色だけでなく、文字の色も変える処理」を追加してください。

ChatGPTの返答例(コード)

If cell.Value >= 100 Then
    cell.Interior.Color = vbYellow
    cell.Font.Color = vbRed

このように、ChatGPTはエラーの解釈や修正のアドバイス、コードの改変依頼にも柔軟に対応してくれます。

「何がわからないかも分からない…」という時こそ、まず質問してみることが大切です。

今日から始められる!ChatGPTと学ぶVBA学習ステップ

ステップ①:やりたいことを日本語で表現する

まずは「こういう処理をしたい」という目的をはっきり言語化しましょう。日本語のままでOKです。

ステップ②:プロンプトで聞いてみる

構文や正確な関数名が分からなくても、「こういう感じで動かしたい」とChatGPTに伝えてみましょう。

ステップ③:出力されたコードを実行・検証

コードをコピペしてExcelで実行してみましょう。うまくいかない場合も、何が起きたかを伝えれば修正案が得られます。

ステップ④:コードの意味を質問して理解を深める

ChatGPTに「このコードの意味を1行ずつ説明してください」と聞けば、わかりやすく噛み砕いて教えてくれます。

初心者向けプロンプトテンプレ集

・A列の空白セルを探して「未入力」と表示したい  
・条件付きで別のシートに転記したい  
・ボタンを押すと集計処理が実行されるマクロを作りたい

チェックリスト:ChatGPT×VBA学習で押さえるポイント

  • 処理の目的を日本語で伝える
  • 構造や範囲(例:A1:A100)を具体的に伝える
  • 結果の出力形式(色付け・メッセージなど)も明示する
  • 出力されたコードの意味を確認する
  • 間違っていても気にせず何度でも聞き直す

ChatGPTと一緒に少しずつ試しながら、「できた!」の体験を積み重ねていきましょう。

発展例:ChatGPTで複雑な処理も依頼できる

ChatGPTは初心者向けの処理だけでなく、繰り返し処理や条件分岐などを含む実務的なVBAコードも対応できます。

複数条件を含むプロンプト例

以下のような処理をしたいです:
・B列に「納期」があります
・納期が今日より前ならセルを赤く
・納期が今日なら黄色
・それ以外は白のまま
この条件でB列に書式を適用するVBAコードを教えてください。

ChatGPTの出力例(コード抜粋)

Sub HighlightDueDates()
    Dim cell As Range
    Dim today As Date
    today = Date
    
    For Each cell In Range("B2:B100")
        If IsDate(cell.Value) Then
            If cell.Value < today Then
                cell.Interior.Color = vbRed
            ElseIf cell.Value = today Then
                cell.Interior.Color = vbYellow
            Else
                cell.Interior.ColorIndex = 0
            End If
        End If
    Next cell
End Sub

このように、日付処理や条件分岐を含むプロンプトにも、ChatGPTは即応できます。

コードにコメントを付けてもらうプロンプト

このマクロコードに初心者向けのコメントを追加してください。

ChatGPTの返答例(コメント追加)

Sub HighlightDueDates()
    Dim cell As Range
    Dim today As Date
    today = Date  ' 今日の日付を取得
    
    ' B2:B100 の範囲をループ
    For Each cell In Range("B2:B100")
        If IsDate(cell.Value) Then  ' 日付かどうか確認
            If cell.Value < today Then
                cell.Interior.Color = vbRed  ' 納期切れなら赤
            ElseIf cell.Value = today Then
                cell.Interior.Color = vbYellow  ' 今日なら黄色
            Else
                cell.Interior.ColorIndex = 0  ' それ以外は白
            End If
        End If
    Next cell
End Sub

このように、ChatGPTはコードだけでなく学習の理解を助けるコメント付きバージョンも生成してくれます。

うまく動かない…そんな時の対話での立て直し例

例:プロンプトに曖昧な条件を入れたために、うまく動かなかったケース

初回プロンプト(失敗)

この表を整理して、必要な情報を取り出すマクロを作ってください。

→ 出力されたコードは「何を取り出すか」が明確でなかったため、目的とズレていました。

ChatGPTに再質問

このデータから「売上が10万円以上の行」だけを抽出して、別のシートに転記する処理にしたいです。

ChatGPTの修正コード(抜粋)

Sub ExtractHighSales()
    Dim wsSrc As Worksheet, wsDst As Worksheet
    Dim lastRow As Long, i As Long, dstRow As Long
    Set wsSrc = Sheets("データ")
    Set wsDst = Sheets("抽出結果")
    
    lastRow = wsSrc.Cells(Rows.Count, 1).End(xlUp).Row
    dstRow = 1
    
    For i = 2 To lastRow
        If wsSrc.Cells(i, 3).Value >= 100000 Then
            wsSrc.Rows(i).Copy Destination:=wsDst.Rows(dstRow)
            dstRow = dstRow + 1
        End If
    Next i
End Sub

このように、具体的な条件・対象・範囲を追記して再質問すれば、ChatGPTは意図通りに修正してくれます。

そうたろ

そうたろ|埼玉在住の30代会社員・一児の父

軽い気持ちで触れたChatGPTの可能性に驚き、今では「日々のデスクワークをもっと楽に、もっとスマートに!」をテーマに活用を模索中。

忙しい社会人・パパママと一緒に、スキルアップしていけるようなヒントを共有していきます!

そうたろをフォローする
Excel
そうたろをフォローする

コメント

タイトルとURLをコピーしました