我的 excel 用户窗体在我下次加载时变得无响应
My excel userform becomes unresponsive the next time I load it
我有两个表单,一个是验证用户进入系统的登录表单,另一个是在验证成功时使用的主表单。我使用访问数据库来搜索有效用户,并在主窗体中填充列表。
这里是代码:
Private Sub CancelCommandButton_Click()
CloseDatabase
Unload Me
End Sub
Private Sub ConfirmCommandButton_Click()
...
End Sub
Private Sub UserForm_Initialize()
ConnectDatabase
End Sub
Private Sub OpenMainForm()
Unload Me
MainForm.Show
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub
这里是管理主窗体加载和关闭的代码:
Public Sub UpdateControls()
PopulateUserList
End Sub
Private Sub UserForm_Activate()
sTag = Split(Me.Tag, "|")
If sTag(0) <> "1" Then
Me.MainFormMultiPage.Pages(0).Enabled = False
Me.MainFormMultiPage.Value = 1
Else
Me.MainFormMultiPage.Pages(0).Enabled = True
Me.MainFormMultiPage.Value = 0
UpdateControls
End If
UserLabel1.Caption = sTag(1)
UserLabel2.Caption = sTag(1)
UserLabel3.Caption = sTag(1)
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
' Tip: If you want to prevent closing UserForm by Close (×) button in the right-top corner of the UserForm, just uncomment the following line:
' Cancel = True
Dim answer As Integer
answer = MsgBox("ÂíÇ ãØãÆäíÏ ˜å ãí ÎæÇåíÏ ÇÒ ÓÇãÇäå ÎÇÑÌ ÔæíÏ¿", vbYesNo + vbQuestion, "ÎÑæÌ ÇÒ ÓÇãÇäå")
If answer = vbYes Then
CloseDatabase
Else
Cancel = True
End If
End If
End Sub
Private Sub UserForm_Terminate()
loginForm.Show
End Sub
当我通过单击 'X' 按钮关闭主窗体时,登录窗体重新出现并且主窗体关闭;但是当我再次登录时(最好使用相同的凭据)显示主表单但完全没有响应(没有列表填充,'X' 按钮不起作用或表单中的任何其他控件)。
我该怎么办? UserForm_CloseQuery() 中的代码是否卸载了主窗体及其所有宏,我无法使所需的事件恢复正常运行,还是我遗漏了什么?
现在不是我开始编码的时候VBA,当出现新问题时,我不能轻易地搞定它的头或尾。任何帮助,将不胜感激。谢谢
假设您的表单是模态的,将登录表单代码更改为:
Private Sub OpenMainForm()
Me.Hide
MainForm.Show
Me.Show
End Sub
并从主窗体中删除 Userform_Terminate
代码。这意味着登录表单会在主表单关闭时自动显示。
我有两个表单,一个是验证用户进入系统的登录表单,另一个是在验证成功时使用的主表单。我使用访问数据库来搜索有效用户,并在主窗体中填充列表。
这里是代码:
Private Sub CancelCommandButton_Click()
CloseDatabase
Unload Me
End Sub
Private Sub ConfirmCommandButton_Click()
...
End Sub
Private Sub UserForm_Initialize()
ConnectDatabase
End Sub
Private Sub OpenMainForm()
Unload Me
MainForm.Show
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub
这里是管理主窗体加载和关闭的代码:
Public Sub UpdateControls()
PopulateUserList
End Sub
Private Sub UserForm_Activate()
sTag = Split(Me.Tag, "|")
If sTag(0) <> "1" Then
Me.MainFormMultiPage.Pages(0).Enabled = False
Me.MainFormMultiPage.Value = 1
Else
Me.MainFormMultiPage.Pages(0).Enabled = True
Me.MainFormMultiPage.Value = 0
UpdateControls
End If
UserLabel1.Caption = sTag(1)
UserLabel2.Caption = sTag(1)
UserLabel3.Caption = sTag(1)
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
' Tip: If you want to prevent closing UserForm by Close (×) button in the right-top corner of the UserForm, just uncomment the following line:
' Cancel = True
Dim answer As Integer
answer = MsgBox("ÂíÇ ãØãÆäíÏ ˜å ãí ÎæÇåíÏ ÇÒ ÓÇãÇäå ÎÇÑÌ ÔæíÏ¿", vbYesNo + vbQuestion, "ÎÑæÌ ÇÒ ÓÇãÇäå")
If answer = vbYes Then
CloseDatabase
Else
Cancel = True
End If
End If
End Sub
Private Sub UserForm_Terminate()
loginForm.Show
End Sub
当我通过单击 'X' 按钮关闭主窗体时,登录窗体重新出现并且主窗体关闭;但是当我再次登录时(最好使用相同的凭据)显示主表单但完全没有响应(没有列表填充,'X' 按钮不起作用或表单中的任何其他控件)。
我该怎么办? UserForm_CloseQuery() 中的代码是否卸载了主窗体及其所有宏,我无法使所需的事件恢复正常运行,还是我遗漏了什么?
现在不是我开始编码的时候VBA,当出现新问题时,我不能轻易地搞定它的头或尾。任何帮助,将不胜感激。谢谢
假设您的表单是模态的,将登录表单代码更改为:
Private Sub OpenMainForm()
Me.Hide
MainForm.Show
Me.Show
End Sub
并从主窗体中删除 Userform_Terminate
代码。这意味着登录表单会在主表单关闭时自动显示。