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

はじめに

前回の拡張です。
touch-sp.hatenablog.com
テキストボックス、ラベルも使えるように拡張してみました。

プロンプト

ユーザーフォームを2行3列に分割し1行目にラベル、ボタン、ボタン、2行目にテキストボックス、テキストボックス、ボタンを並べたい。すべてのコントロールの幅は同じにしてください。

結果

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

完璧でした。

ただし、「すべてのコントロールの幅は同じにしてください。」の文言を入れなければおかしな大きさになってしまいました。

方法

システムプロンプトに以下を入力しておきました。それだけです。

以下はVBAでユーザーフォームを2x3(2行3列)のグリッドに分割し、1行目にラベル、テキストボックス、ボタン、2行目にラベル、テキストボックス、ボタンを配置するためのコードです。これを参考にユーザーの質問に答えて下さい。
'''
Private WithEvents btn1 As CommandButton
Private WithEvents btn2 As CommandButton
Private txt1 As MSForms.TextBox
Private txt2 As MSForms.TextBox
Private lab1 As MSForms.Label
Private lab2 As MSForms.Label


Private Sub UserForm_Initialize()
    
    Dim row As Integer
    Dim col As Integer
    Dim control_height As Integer
    Dim control_width As Integer
    Dim margin As Integer
    Dim interval As Integer
    Dim font_size As Integer
    
    font_size = 24
    control_width = 100 ' ボタンの幅
    margin = 5 'ユーザーフォームとコントロール間のマージン
    interval = 10 'コントロール間のスペース
    
    Dim dummy As Object
    Set dummy = Me.Controls.Add("Forms.TextBox.1", "dummy_textbox")
    dummy.AutoSize = True
    dummy.Font.Size = font_size
    control_height = dummy.Height
    Me.Controls.Remove "dummy_textbox"
    
        
    row = 1
    col = 1
    Set lab1 = Me.Controls.Add("Forms.Label.1", "label1")
    With lab1
        .Font.Size = font_size
        .Height = control_height
        .Width = control_width
        .TextAlign = fmTextAlignCenter
        .Top = (control_height + interval) * (row - 1) + margin
        .Left = control_width * (col - 1) + margin
        .Caption = "Label1"
    End With
        
    row = 1
    col = 2
    Set txt1 = Me.Controls.Add("Forms.TextBox.1", "textbox1")
    With txt1
        .Font.Size = font_size
        .Height = control_height
        .Width = control_width
        .Top = (control_height + interval) * (row - 1) + margin
        .Left = control_width * (col - 1) + margin
    End With
    
    row = 1
    col = 3
    Set btn1 = Me.Controls.Add("Forms.CommandButton.1", "button1")
    With btn1
        .Font.Size = font_size
        .Height = control_height
        .Width = control_width
        .Top = (control_height + interval) * (row - 1) + margin
        .Left = control_width * (col - 1) + margin
        .Caption = "Button1"
    End With
    
    row = 2
    col = 1
    Set lab2 = Me.Controls.Add("Forms.Label.1", "label2")
    With lab2
        .Font.Size = font_size
        .Height = control_height
        .Width = control_width
        .TextAlign = fmTextAlignCenter
        .Top = (control_height + interval) * (row - 1) + margin
        .Left = control_width * (col - 1) + margin
        .Caption = "Label2"
    End With
    
    row = 2
    col = 2
    Set txt2 = Me.Controls.Add("Forms.TextBox.1", "textbox2")
    With txt2
        .Font.Size = font_size
        .Height = control_height
        .Width = control_width
        .Top = (control_height + interval) * (row - 1) + margin
        .Left = control_width * (col - 1) + margin
    End With
    
    row = 2
    col = 3
    Set btn2 = Me.Controls.Add("Forms.CommandButton.1", "button2")
    With btn2
        .Font.Size = font_size
        .Height = control_height
        .Width = control_width
        .Top = (control_height + interval) * (row - 1) + margin
        .Left = control_width * (col - 1) + margin
        .Caption = "Button2"
    End With
    
    Me.Height = control_height * 2 + interval * 1 + margin * 2 + 29
    Me.Width = control_width * 3 + margin * 2 + 12
    
End Sub

Private Sub btn1_Click()
End Sub

Private Sub btn2_Click()
End Sub
'''





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