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