VBA|VBE自動化|VBComponents.Add(vbext_ct_MSForm)|UserFormを作成する
■ 基本構文
(疑似構文)
Set ufComp = VBProject.VBComponents.Add({MSForm})
ufComp.Name = {フォーム名}
ufComp.Designer.Controls.Add({ProgID})(前提)
・「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」を有効化する
・UserForm作成はVBE構造を変更するため、実行前バックアップを推奨する
(戻り値の型・性質)
戻り値なし(UserForm新規作成・コントロール追加の副作用)
■ サンプルコード
サンプル①:UserFormを作成し、LabelとTextBoxを追加する
役割:フォームと基本コントロールをコードで生成する
理由:雛形作成を自動化し、項目追加をループで処理できる
注意:同名UserFormが既にある場合は Name でエラーになり得る
Option Explicit
Public Sub CreateUserForm_Basic()
Const vbext_ct_MSForm As Long = 3
Dim ufComp As Object
Dim d As Object
Dim lbl As Object, txt As Object
Set ufComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
ufComp.Name = "UserForm_Auto"
Set d = ufComp.Designer
Set lbl = d.Controls.Add("Forms.Label.1")
lbl.Caption = "Name"
lbl.Left = 12: lbl.Top = 12: lbl.Width = 48
Set txt = d.Controls.Add("Forms.TextBox.1")
txt.Left = 70: txt.Top = 10: txt.Width = 120
End Sub■ 備考
・用語:UserForm|ユーザーフォーム / Designer|デザイナー
・ProgID例:Forms.Label.1 / Forms.TextBox.1
いいなと思ったら応援しよう!
技術メモや学習の整理として書いています。
もし内容が役に立ったり、続きを読みたいと思っていただけたら、
応援として受け取らせてもらえたら嬉しいです。