对象如何与客户端断开连接?

时间:2017-11-11 06:13:34

标签: excel-vba vba excel

我在Excel 2016 VBA中制作了以下代码。

Private Sub useridno_AfterUpdate()

    Dim strMsg As String
    Dim ret_type As Integer
    Dim strTitle As String

    strTitle = "Wrong User ID Number!"
    strMsg = " Would you like to try again?"

    If Me.useridno.Value <> 1 Then
        ret_type = MsgBox(strMsg, vbYesNo + vbCritical, strTitle)

        Select Case ret_type
            Case 6
                Me.useridno.SetFocus
                Me.useridno.Text = ""
            Case 7
                Unload Me
        End Select
    End If

End Sub

当我运行它时,它会返回以下错误:

Disconnected to its clients!

当我在消息框中选择“否”按钮时会发生这种情况。为什么会这样?

1 个答案:

答案 0 :(得分:1)

在项目的某个位置,您有一个显示userform的Show命令。从那一刻起,用户形式就处于控制之中。当用户窗体关闭时,Show命令后面的代码将恢复。执行此操作的命令是Me.Hide,正如@Storax指出的那样。

您的代码改为Unload Me。当其他过程尝试在Show命令后引用userform时,会发生此错误。您的代码可能会尝试从表单中读取某些数据,或者可能存在无关紧要的Set UserForm = Nothing。它已经卸载,因此不能再被引用了。

正确的方法是在Show命令之后以及从表单中检索到您可能想要使用的所有数据后,在调用过程中卸载表单。然后,如果您希望从内存中显式释放表单的对象变量,则可以这样做。