前々回、iPadでChatGPTを使ってみたところ、ChatGPTはExcelのマクロをVBAで書き出せることをノリピーは学びました。
▼【ChatGPT】今更だけどiPadで使ってみた。
そこで今回は、ChatGPTに書かせたExcelマクロを実際にExcelで実行させてみたいと思います。
果たして、ChatGPTが書き出したExcelマクロはちゃんと動くのでしょうか?
ChatGPTに書かせたいExcelマクロ
ChatGPTに尋ねる前に、まずは作ってほしいExcelのマクロを事前にリストアップしておきます。
- セルA1に入力があった場合、セルB2に「らりるれろ」と入力するマクロ
- セルA1に入力があった場合、セルB2に今日の日付を入力するマクロ
- 数字が入力されたセルを赤色にするマクロ
- A列のセルに入力された数値が100未満の場合は「小さい」、100以上200以下の場合は「ちょうど良い」、201以上の場合は「大きい」と右隣(B列)のセルに返すマクロ
- 全てのセルを対象にして、「ChatGPT」もしくは「チャットGPT」と入力された場合にメッセージ(「ChatGPTはOpenAIが開発しています。」)を表示されるマクロ
実用性があるかはともかく、とりあえず上の5つを考えてみました。
(ノリピーは日常生活にて、Excelでマクロを作ることを求められることはほぼほぼないため、実用的なものはどうしても思いつきませんでした…)
ChatGPTが考えたExcelマクロ
それでは、先ほど考えたExcelのマクロをChatGPTに作ってもらいましょう。
1:セルA1に入力があった場合、セルB2に「らりるれろ」と入力するマクロ
そのままChatGPTに尋ねてもChatGPTは返答に困ることでしょうから、会話になるように文章化します。
私はExcelのマクロを作りたいです。セルA1に入力があった場合、セルB2に「らりるれろ」と自動的に入力されるマクロを教えてください。
…と尋ねてみたところ、以下のマクロを書いてくれました。
Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$A$1" ThenRange("B2").Value = "らりるれろ"End IfEnd Sub
さっそくVBEを起動して、上記のマクロをコピー&ペーストしてみます。
ChatGPTはペーストする場所についても教えてくれていて、目的のブックを右クリックして挿入した「モジュール」にペーストしてほしいとのことです。
ペーストを終え、試しにセルA1に「あ」と入力してみると…
なんということでしょうか!
何の変化も起きず、セルB2は依然空白のままです。
ググって調べてみますと、「Worksheet_Change」のようなWorksheetのイベントプロシージャーは挿入したモジュールではなく、それを実行させたいシート(のコードウィンドウ)に直接書き込むようです。
ChatGPTにも『私はExcelのマクロを作っています。「Worksheet_Change」のようなWorksheetのイベントプロシージャーは、VBE(Visual Basic Editor)のどこに書き込めばいいですか?』と追加で尋ねてみたところ、「すいません、誤解が生じました。」とお詫びした上で同様のことを教えてくれました。
ですので、先ほどのマクロをペーストする場所を変えてみたところ、今度はセルB2に「らりるれろ」と自動的に入力されました。
成功です!
2:セルA1に入力があった場合、セルB2に今日の日付を入力するマクロ
そのままChatGPTに尋ねてもChatGPTは返答に困ることでしょうから(ry
私はExcelのマクロを作りたいです。セルA1に入力があった場合、セルB2に今日の日付を自動的に入力するマクロを教えてください。日付はセルA1に入力があった日にしてください。
…と尋ねてみたところ、以下のマクロを書いてくれました。
Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$A$1" ThenRange("B2").Value = DateEnd IfEnd Sub
セルのデフォルトの書式設定が「標準」になっているためシャープで表示されていますが、今回は問題なく動きました。
ChatGPTが指定したマクロを書く場所も問題ありません。
3:数字が入力されたセルを赤色にするマクロ
そのままChatGPTに尋ねてもChatGPTは返答に困るこ(ry
私はExcelのマクロを作りたいです。全てのセルを対象にして、セルに数字が入力された場合にそのセルの色を赤色にするマクロを教えてください。
…と尋ねてみたところ、以下のマクロを書いてくれました。
Private Sub Worksheet_Change(ByVal Target As Range)Dim cell As RangeFor Each cell In TargetIf IsNumeric(cell.Value) Thencell.Interior.Color = RGB(255, 0, 0) ' 赤色End IfNext cellEnd Sub
無事に数字が入力されたセルの背景を赤色にできました。
4:A列のセルに入力された数値が100未満の場合は「小さい」、100以上200以下の場合は「ちょうど良い」、201以上の場合は「大きい」と右隣(B列)のセルに返すマクロ
そのままChatGPTに尋ねてもChatGPTは(ry
私はExcelのマクロを作りたいです。A列にあるセルに数値が入力された場合、その右隣のセルに文字を自動的に入力するマクロを教えてください。自動的に入力される文字は、A列のセルに入力された数値が100未満の場合は「小さい」、100以上200以下の場合は「ちょうど良い」、201以上の場合は「大きい」というようにしてください。
…と尋ねてみたところ、以下のマクロを書いてくれました。
Private Sub Worksheet_Change(ByVal Target As Range)Dim cell As RangeFor Each cell In TargetIf Not Intersect(cell, Range("A:A")) Is Nothing And IsNumeric(cell.Value) ThenSelect Case cell.ValueCase Is < 100cell.Offset(0, 1).Value = "小さい"Case 100 To 200cell.Offset(0, 1).Value = "ちょうど良い"Case Is > 200cell.Offset(0, 1).Value = "大きい"End SelectEnd IfNext cellEnd Sub
上記のマクロを実行させてみた結果が下の画像です。
ChatGPTへの依頼文が長くなりましたが、それでも適切なマクロを返してくれています。
5:全てのセルを対象にして、「ChatGPT」もしくは「チャットGPT」と入力された場合にメッセージ(「ChatGPTはOpenAIが開発しています。」)を表示されるマクロ
そのままChatGPTに尋ねても(ry
私はExcelのマクロを作りたいです。全てのセルを対象にして、「ChatGPT」もしくは「チャットGPT」と入力された場合にメッセージを表示させるマクロを教えてください。メッセージの文面は「ChatGPTはOpenAIが開発しています。」にしてください。
…と尋ねてみたところ、以下のマクロを書いてくれました。
Private Sub Worksheet_Change(ByVal Target As Range)Dim cell As RangeFor Each cell In TargetIf InStr(1, cell.Value, "ChatGPT", vbTextCompare) > 0 Or InStr(1, cell.Value, "チャットGPT", vbTextCompare) > 0 ThenMsgBox "ChatGPTはOpenAIが開発しています."End IfNext cellEnd Sub
最後のマクロも完璧に書いてもらえました。
まとめ
ChatGPTすごいですね~。
より実用的で複雑なマクロとなるとどうなるかは分かりませんが、簡単なマクロ程度ならば問題なく書けることが確認できました。
実はノリピー、Excelにとある機能を足したくて独学でExcelのマクロを書こうとした過去があります。
しかし、当時のノリピーにVBAは難しすぎて、結局全て手作業で入力するという力技をすることになりました…
あれから数年、今度はChatGPTの助けを借りながら近々再チャレンジしてみようと思います!