唐突ですが、『プログラムで UserForm を操作する方法』を参考にして、デザインしたUserFormをVBAから作成する事ができます。
(実行後)
ただ、VBAからVBProjectにアクセスするには、何かとセキュリティ上の問題があるため
ExcelXP以降はデフォルトの設定ではエラーメッセージが表示されます。
ですので事前にセキュリティの設定変更が必要です。
(「Visual Basic プロジェクトへのアクセスを信頼する」にチェックする)
一般ユーザーにはあまり必要ないので、セキュリティ変更はしないほうが良いと思います。
UserFormを使って、ちょっとした入力支援Appliなどを作成したりする方には、コーディングの効率化を図るヒントになるかもしれません。
私はあまりUserForm使わない人なので...掲示板用コードテストくらいしか用途ないですけど。
Sub try() Const vbext_ct_MSForm As Long = 3 Const mg As Single = 1 Const w As Single = 100 Const h As Single = 20 Dim iw As Single Dim ih As Single Dim x As Single Dim y As Single Dim i As Long Dim j As Long Dim v, z v = VBA.Array(10, 10, 10, 10) z = VBA.Array("Forms.Label.1", _ "Forms.TextBox.1", _ "Forms.ComboBox.1", _ "Forms.CommandButton.1") With ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm) iw = .Properties("Width") - .Properties("InsideWidth") ih = .Properties("Height") - .Properties("InsideHeight") .Properties("Width") = iw + (mg + w) * (UBound(v) + 1) + mg .Properties("Height") = ih + (mg + h) * Application.Max(v) + mg With .Designer For i = 0 To UBound(v) For j = 1 To v(i) With .Controls.Add(z(i)) .Left = mg + x .Top = mg + y .Width = w .Height = h y = y + mg + h End With Next j x = x + mg + w y = 0 Next i End With End With End Sub
(実行後)
ただ、VBAからVBProjectにアクセスするには、何かとセキュリティ上の問題があるため
ExcelXP以降はデフォルトの設定ではエラーメッセージが表示されます。
ですので事前にセキュリティの設定変更が必要です。
(「Visual Basic プロジェクトへのアクセスを信頼する」にチェックする)
一般ユーザーにはあまり必要ないので、セキュリティ変更はしないほうが良いと思います。
UserFormを使って、ちょっとした入力支援Appliなどを作成したりする方には、コーディングの効率化を図るヒントになるかもしれません。
私はあまりUserForm使わない人なので...掲示板用コードテストくらいしか用途ないですけど。