【Excel/VBAマクロ】AIチャット(新しいBing・ChatGPT)でコードを自動生成する

ExcelのVBA(マクロ)をAIチャット(新しいBing・ChatGPT)で自動生成する方法をまとめました。

新しいBingでのコード生成手順

●対象のExcelファイルを用意します。今回は[Sheet1]シートのB2セルからE5セルに以下の表を用意しました。

●新しいBingのチャット画面を表示します。

●以下を送信します。

Excel VBAを組んでください。
「Sheet1」シートのC列からE列の3行目から5行目までのセルについて素数が表示されている場合は背景色を黄色にしてください。また、値が10以上の場合は文字色を赤にしてください。
尚、素数とは2以上の自然数で、正の約数が1と自分自身のみであるものです。

●以下が返ってきました。

Sub PrimeNumber()
    Dim i As Integer, j As Integer
    Dim isPrime As Boolean
    For i = 3 To 5
        For j = 3 To 5
            isPrime = True
            If Cells(i, j).Value >= 2 Then
                For k = 2 To Cells(i, j).Value - 1
                    If Cells(i, j).Value Mod k = 0 Then
                        isPrime = False
                        Exit For
                    End If
                Next k
                If isPrime Then
                    Cells(i, j).Interior.ColorIndex = 6 '黄色'
                End If
                If Cells(i, j).Value >= 10 Then
                    Cells(i, j).Font.ColorIndex = 3 '赤'
                End If
            End If
        Next j
    Next i
End Sub 

●上記のコードをExcel VBA編集画面の[Sheet1]モジュールにコピー&ペーストします。

●F5キーで実行すると以下の結果となりました。

Tips

●Bingのチャット画面で最初に質問される[会話のスタイルを選択]では、[より厳密に]を選択するとスムーズにコードが出力されました。

●時々間違ったコードが表示されるため、実行前にコードを確認して手直しすることが必要です。

ChatGPTでのコード生成手順

●同じメッセージをChatGPTに送ってみました。こちらはフリープランのChatGPT3.5が対象です。

●以下が返ってきました。

Sub HighlightPrimes()
    Dim ws As Worksheet
    Dim rng As Range, cell As Range
    Dim row As Long, col As Long
    Dim num As Long
    Dim isPrime As Boolean

    ' 対象のシートを取得
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' C列からE列の3行目から5行目までの範囲を取得
    Set rng = ws.Range("C3:E5")
    
    ' 各セルに対して処理を実行
    For Each cell In rng
        ' セルの値を数値に変換
        num = Val(cell.Value)
        
        ' 値が10以上の場合は文字色を赤に変更
        If num >= 10 Then
            cell.Font.Color = RGB(255, 0, 0) ' 赤色
        End If
        
        ' 値が2以上の場合、素数かどうか判定
        If num >= 2 Then
            isPrime = True
            For i = 2 To Int(Sqr(num))
                If num Mod i = 0 Then
                    isPrime = False
                    Exit For
                End If
            Next i
            
            ' 素数の場合は背景色を黄色に変更
            If isPrime Then
                cell.Interior.Color = RGB(255, 255, 0) ' 黄色
            End If
        End If
    Next cell
End Sub 

●上記のコードをExcel VBA編集画面の[Sheet1]モジュールにコピー&ペーストします。

●F5キーで実行すると新しいBingと同様の結果となりました。

Tips

●ChatGPTでは、適宜コメントを挿入してくれました。

Excel/VBAの応用例など、全般については以下ページで解説しています。

404 NOT FOUND | VBA入門速報

コメント