我在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
当我运行它时,它会返回以下错误:
当我在消息框中选择“否”按钮时会发生这种情况。为什么会这样?
答案 0 :(得分:1)
在项目的某个位置,您有一个显示userform的Show
命令。从那一刻起,用户形式就处于控制之中。当用户窗体关闭时,Show
命令后面的代码将恢复。执行此操作的命令是Me.Hide
,正如@Storax指出的那样。
您的代码改为Unload Me
。当其他过程尝试在Show
命令后引用userform时,会发生此错误。您的代码可能会尝试从表单中读取某些数据,或者可能存在无关紧要的Set UserForm = Nothing
。它已经卸载,因此不能再被引用了。
正确的方法是在Show
命令之后以及从表单中检索到您可能想要使用的所有数据后,在调用过程中卸载表单。然后,如果您希望从内存中显式释放表单的对象变量,则可以这样做。