【问题标题】:"Run-time error "-2147417848 (80010108) Automation error: The object invoked has disconnected from its clients"“运行时错误”-2147417848 (80010108) 自动化错误:调用的对象已与其客户端断开连接”
【发布时间】:2020-08-31 23:53:31
【问题描述】:

我有一个用户表单,我可以在其中检查输入的名称是否在数据库中。

我区分以不同形式添加联系人和编辑联系人,因此如果在“添加联系人”表单中输入了数据库中的名称,vbYesNo MsgBox 会告诉用户并提供更改输入名称的机会(vbNo) 或编辑现有名称 (vbYes)。

Private Sub cmbLastName_AfterUpdate()

    Dim FullName As String
    FullName = cmbFirstName & " " & cmbLastName

    Dim answer As Integer

    If Application.WorksheetFunction.CountIf(Range("List_Full_Name"), FullName) Then

        answer = MsgBox(FullName & " already included in contact list. Edit contact?", vbYesNo, "Error").

        If answer = vbYes Then
            Unload AddContact
            EditContact.Show
            Sheets("Engine").Range("C4").Value = "EDIT"
        Else
    
        End If

    Else

    End If

End Sub 

EditContact.Show 似乎可以工作,但是当我关闭 EditContact 用户窗体时,程序崩溃并显示

运行时错误“-2147417848 (80010108) 自动化错误:调用的对象已与其客户端断开连接

当我按下调试时,AddContact.Show 高亮显示:

Sub ShowAddContact()

    Sheets("Engine").Range("C4").Value = "NEW"
    AddContact.Show

End Sub

这段代码打开 AddContact 用户窗体,并在工作表中单击“添加联系人”按钮时调用。引擎工作表引用一个已更改的单元格,具体取决于是应将条目添加到数据库中还是应更改现有条目。

【问题讨论】:

    标签: excel vba automation userform


    【解决方案1】:

    要检查问题的真正原因,您应该进入 VBA 编辑器 -> 工具 -> 选项 -> 常规,然后将错误捕获选项更改为“Break in Class Module”。再次调用错误,这次 Debug 选项会显示导致错误的确切行。

    【讨论】:

    • 感谢您的回答!不幸的是,这似乎并没有改变任何东西。 AddContact.Show 命令被突出显示,但是当我在那里卸载 A​​ddContact 时,我看不出它与 MsgBox 中的 vbYes 选项有何冲突。
    • 也许你还不应该卸载 AddContact。尝试隐藏它(AddContact.hide)并在用户关闭“EditContact”用户表单或数据成功更新后将其卸载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2015-02-08
    相关资源
    最近更新 更多