2017-11-11 85 views
0

我从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!

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

+0

变化的数据类型与变种昏暗ret_type作为整数变暗ret_type为Variant – Sixthsense

+0

什么样的控制是'useridno'? –

+0

@RobinMackenzie,这是我的用户表单中的文本框。 –

回答

1

某处在你的项目,你有一个Show命令,它显示窗体。从那一刻起,用户表单处于控制之中。当用户窗体关闭时,将继续执行Show命令后面的代码。 @Storax指出的命令是Me.Hide

你的代码有Unload Me代替。当其他过程试图在Show命令之后引用用户表单时发生此错误。您的代码可能会尝试从表单读取一些数据,或者可能存在无害的Set UserForm = Nothing。它已经卸载,因此不能再提及。

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

+0

注意到先生。谢谢。我现在明白!:)也感谢Storax! –

相关问题