HOME > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > ユーザフォームをコードから作成する

即効テクニック

ユーザーフォーム関連のテクニック

ユーザフォームをコードから作成する

(Excel 97/2000)
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メソッドのヘルプをご覧ください。