我的excel用户表单在我下次加载时变得没有响应

问题描述:

我有两种形式,一种登录表单来验证用户进入系统和一个主要表单,如果验证成功的话。我使用访问数据库来搜索有效用户,并在主窗体中填充列表。我的excel用户表单在我下次加载时变得没有响应

The user form for authentication

这里是该代码:

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代码。这将意味着登录表单在主窗体关闭时自动显示。

+0

非常感谢Rory,其实我有一个错误,需要一点改变,我也改变了登录表单初始化事件来激活,现在它工作得很好。 –