カスタム/高度なメッセージ ボックスを作成しようとしています (できる、またはできるはずなので)
Web でこれらのリソースを見ました。
1) MSDN - ユーザーフォームをプログラムで操作する方法
UserForm を追加する 'MessageBox' というクラス モジュールを VB プロジェクトに作成しました。ボタンを追加してからフォームを表示する必要があります。また、Visual Basic Applications Extensibility リファレンスも追加しました。
しかし、ユーザーフォーム名を変更しようとすると、^&%^ コードでパス/ファイルアクセスエラーが発生し続けます...
私は何を間違っていますか?
Private oForm As Object
Function Show(Optional ByVal MessageText As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal Caption As String) As VbMsgBoxResult
Dim oControl() As MSForms.CommandButton
Dim x As Integer, MaxWidth As Long
Set oForm = Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_MSForm)
With oForm
.Properties("Height") = 200
.Properties("Width") = 300
.Properties("Caption") = Caption
If Buttons = vbDefaultButton1 Then
ReDim oControl(0)
Set oControl(0) = .Designer.Controls.Add("Forms.CommandButton.1")
With oControl(0)
.Caption = "OK"
.Height = 18
.Width = 44
.Left = MaxWidth + 147
.Top = 6
.Name = "cmdOK"
End With
End If
.Name = "cMessageBox"
End With
'Application.VBE.ActiveVBProject.VBComponents("UserForm1").Name="cMessageBox"
' ActiveWorkbook.VBProject.VBComponents ("cMessageBox")
With oForm.CodeModule
x = .CountOfLines
.InsertLines x + 1, "Sub cmdOK_Click()"
.InsertLines x + 2, " Unload Me"
.InsertLines x + 3, "End Sub"
' .InsertLines x + 4, ""
' .InsertLines x + 5, "Sub CommandButton2_Click()"
' .InsertLines x + 6, " Unload Me"
' .InsertLines x + 7, "End Sub"
End With
Call ShowIt
End Function
Private Sub ShowIt()
cMessageBox.Show
End Sub