多页错误:调用的对象已与其客户端断开连接

时间:2018-06-28 17:14:17

标签: excel vba excel-vba

因此,上周我可能花了很多时间研究/尝试解决此烦人的错误,但无济于事。这是我正在尝试做的事情以及我得到的错误:

我有一个包含12个多页页面的用户窗体,要访问我已编码的上一个/下一个按钮的每个页面。现在,可以通过属性禁用这些页面之一以向用户隐藏,直到单击特定复选框为止。单击该页面后,将启用该页面,并且用户现在可以查看此页面以及所有其他页面。当再次单击该复选框(将其设置为false并不再为true)时,该页面将对用户隐藏。这基本上就是我要完成的工作。这些页面是这样的:

第1页,第2页,第3页,第4页,“第5页” ,第6页等。

如您所见,第5页是已禁用/启用的内容。现在,还需要注意一些重要的事情,我使用以下方法使用户窗体显示在工作簿实际可见之前:

 Private Sub Workbook_Open()
    Application.ScreenUpdating = False

    ThisWorkbook.Application.Visible = False
    OpeningWindow.Show
    Windows(ThisWorkbook.Name).Visible = True
    Application.Visible = True
    Application.ScreenUpdating = True
End Sub

我想避免更改,因为至关重要的是,用户表单首先出现在工作簿之前,因为工作簿充当使用此多页系统在用户表单中键入的所有内容的存储/数据库。现在,当我通过VBA运行用户窗体并测试此功能“ checkbox_click启用/禁用多页页面”时,它没有问题。当我尝试打开它时(好像您是在没有打开任何东西的情况下启动excel一样),一切正常,直到我单击有问题的复选框以启用多页显示为止。这是我收到错误消息“调用的对象已与其客户端断开连接”的地方。现在,我尝试了其他方法来查看是否可以获得相同的结果:

  1. 使多页页面可见= False,而不是Enabled = false。

结果:这在某种程度上可行,但是当在可见的页面5 = False的情况下尝试单击上一个按钮以返回页面(从页面6到页面5)时,上一个按钮没有响应,就好像它知道页面5在那里即使它是不可见的。

无论如何,总结一下,我想问一下这里的社区是否有人确切知道为什么,从下面提供的负责此“页面启用/禁用功能”的代码中,我得到了这个调用的对象已断开连接错误,并且有解决此问题的方法。

Private Sub CheckBox119_Click()
    If CheckBox119.Value = True Then
        Me.MultiPage1.Pages(5).Enabled = True
        CheckBox138.Value = True
        Label309.Visible = True
    Else
        Me.MultiPage1.Pages(5).Enabled = False
        CheckBox138.Value = False
        Label309.Visible = False
    End If
End Sub

CheckBox138 btw位于Page5上,如果用户希望单击它以禁用page5并跳转到Page4,则为该代码:

Private Sub CheckBox138_Click()
    If CheckBox138.Value = False Then
        MultiPage1.Value = 4
        CheckBox119.Value = False
        Label309.Visible = False
    End If
End Sub

此外,我对使用VBA进行编码还比较陌生,但是我随时准备学习。

1 个答案:

答案 0 :(得分:1)

经过一番游戏后,我相信我知道了问题所在。禁用页面中的复选框138是罪魁祸首。通过删除代码Private sub checkbox138_click(),它现在可以工作。我不完全确定为什么会发生这种情况(因此,有更多知识的人可能可以解释),但是当单击checkbox119时,checkbox138应该变成了事实,因为这就是初始代码所表达的。但是,即使假设将checkbox119设置为true来启用禁用的页面,然后再将checkbox138设置为true,似乎还是会出现问题。似乎checkbox138认为禁用的页面仍处于禁用状态(即使checkbox119应该启用了该功能),因此将checkbox138隐藏了。