ユーザフォームをコードから作成する
VBAのコードからユーザフォームを作成するにはフォームモジュールの
追加を行い、Designerプロパティーなどを活用することになります。

サンプルでは追加したユーザフォームにコマンドボタンの配置、位置決め、
イベントプロシージャ(コマンドボタンのクリックイベント)の作成を行い
ます。

※実行にはVisual Basic For Applications Extensibility を参照設定して
 ください。

Sub MyProc()

    Dim Frm As VBIDE.VBComponent
    Dim Ctrl As Control
    'ユーザフォームを追加
    Set Frm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)

    With Frm
    
        'フォームにコマンドボタンを配置
        Set Ctrl = .Designer.Controls.Add("Forms.CommandButton.1")
        With Ctrl
            .Name = "Cmd" 'ボタン名
            .Object.Caption = "ボタンのキャプション"
            'ボタンの位置をフォームの右端下にする
            .Top = Frm.Designer.InsideHeight - Ctrl.Height
            .Left = Frm.Designer.InsideWidth - Ctrl.Width
        End With

        'ボタンのクリックイベントプロシージャを作成
        .CodeModule.CreateEventProc "Click", Ctrl.Name
        .CodeModule.InsertLines 2, "Msgbox ""テストです"""

    End With

End Sub

※Controls.Add(ProgID)・・・ProgIDでコントロールの種類を決定します。
 詳細はAddメソッドのヘルプをご覧ください。

Excel97,2000



戻る


Excel Word Access VBA! モーグ