1

カスタム/高度なメッセージ ボックスを作成しようとしています (できる、またはできるはずなので)

Web でこれらのリソースを見ました。

1) MSDN - ユーザーフォームをプログラムで操作する方法

2)プログラムで UserForm を追加する

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
4

0 に答える 0