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