【Excel VBA】HuggingChatからCohereForAI/c4ai-command-r-plusを使って日本語指示でユーザーフォームにボタンを配置する

はじめに

以前PySide6を使って同様のことをしました。
touch-sp.hatenablog.com
今度はVBAでチャレンジしました。

システムプロンプト

システムプロンプトに例を記述しておきます。

以下はVBAでユーザーフォームにボタンを6個(縦3行、横2列)追加するためのサンプルコードです。これを参考にユーザーの質問に答えて下さい。
'''
Private WithEvents btn1 As CommandButton
Private WithEvents btn2 As CommandButton
Private WithEvents btn3 As CommandButton
Private WithEvents btn4 As CommandButton
Private WithEvents btn5 As CommandButton
Private WithEvents btn6 As CommandButton

Private Sub UserForm_Initialize()
    
    Dim row As Integer
    Dim col As Integer
    Dim button_height As Integer
    Dim button_width As Integer
    Dim margin As Integer
    
    button_height = 50 ' ボタンの高さ
    button_width = 100 ' ボタンの幅
    margin = 5 ' ユーザーフォームとボタン間のマージン
    
    row = 1
    col = 1
    Set btn1 = Me.Controls.Add("Forms.CommandButton.1", "button1")
    With btn1
        .Height = button_height
        .Width = button_width
        .Top = button_height * (row - 1) + margin
        .Left = button_width * (col - 1) + margin
    End With
    
    row = 1
    col = 2
    Set btn2 = Me.Controls.Add("Forms.CommandButton.1", "button2")
    With btn2
        .Height = button_height
        .Width = button_width
        .Top = button_height * (row - 1) + margin
        .Left = button_width * (col - 1) + margin
    End With
    
    row = 2
    col = 1
    Set btn3 = Me.Controls.Add("Forms.CommandButton.1", "button3")
    With btn3
        .Height = button_height
        .Width = button_width
        .Top = button_height * (row - 1) + margin
        .Left = button_width * (col - 1) + margin
    End With
    
    row = 2
    col = 2
    Set btn4 = Me.Controls.Add("Forms.CommandButton.1", "button4")
    With btn4
        .Height = button_height
        .Width = button_width
        .Top = button_height * (row - 1) + margin
        .Left = button_width * (col - 1) + margin
    End With
    
    row = 3
    col = 1
    Set btn5 = Me.Controls.Add("Forms.CommandButton.1", "button5")
    With btn5
        .Height = button_height
        .Width = button_width
        .Top = button_height * (row - 1) + margin
        .Left = button_width * (col - 1) + margin
    End With
    
    row = 3
    col = 2
    Set btn6 = Me.Controls.Add("Forms.CommandButton.1", "button6")
    With btn6
        .Height = button_height
        .Width = button_width
        .Top = button_height * (row - 1) + margin
        .Left = button_width * (col - 1) + margin
    End With
    
    Me.Height = button_height * 3 + margin * 2 + 29
    Me.Width = button_width * 2 + margin * 2 + 12
    
End Sub

Private Sub btn1_Click()
End Sub

Private Sub btn2_Click()
End Sub

Private Sub btn3_Click()
End Sub

Private Sub btn4_Click()
End Sub

Private Sub btn5_Click()
End Sub

Private Sub btn6_Click()
End Sub
'''

実行

プロンプトは以下のようにしました。

VBAでユーザーフォームにボタンを2x2で並べたい

回答

返ってきたコードを実行すると以下のようになりました。

完璧です!

テキストボックスやラベルなども含む複雑なGUIにも今後チャレンジしたいと思います。

HTMLなら画像(簡単なスケッチなど)からコードを書いてくれるようですが・・・。



このエントリーをはてなブックマークに追加