VBA表格没有';t显示第二次
我的VBA登录表单有问题,它应该可以保护我的书。 我已经创建了登录页面和两个登录表单:学生和教师。它们在使用上相似,但不能正常工作 若我选择了“以教师身份登录”按钮,但随后决定关闭此窗口以供学生登录,那个么QueryClose方法应该可以工作。但这只起作用一次。 在登录页面中,当我按下命令按钮时,TeacherForm也只显示一次。正如你们已经理解的,我需要在这些表单之间轻松切换 我的代码(登录页面)是: 教师表格:VBA表格没有';t显示第二次,vba,userform,Vba,Userform,我的VBA登录表单有问题,它应该可以保护我的书。 我已经创建了登录页面和两个登录表单:学生和教师。它们在使用上相似,但不能正常工作 若我选择了“以教师身份登录”按钮,但随后决定关闭此窗口以供学生登录,那个么QueryClose方法应该可以工作。但这只起作用一次。 在登录页面中,当我按下命令按钮时,TeacherForm也只显示一次。正如你们已经理解的,我需要在这些表单之间轻松切换 我的代码(登录页面)是: 教师表格: Private Sub UserForm_QueryClose(Cancel
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
Me.Hide
Unload Me
Load LoginPage
LoginPage.Show
End If
End Sub
Private Sub PTTB_Change()
PTTB.PasswordChar = "*"
End Sub
Private Sub SubmitTeacher_Click()
If LTTB.Value = "User" Then
If PTTB.Value = "SuperUser" Then
MsgBox ("Access granted!")
Else
MsgBox ("Access denied!")
End If
Else
MsgBox ("Access denied!")
End If
End Sub
如果我做错了什么,请帮助我。谢谢问题是您正在卸载表单的默认实例。您应该实例化Userforms的新实例并隐藏它们,而不是卸载它们。本文对此进行了最好的解释
你应该考虑下载,它的免费代码格式化功能将节省你大量的时间。
@ Timman是正确的——你应该绝对地创建你的用户表单的新实例并直接与这些实例一起工作。p>
此外,我不建议显示
事件中的下一个表单UserForm\u QueryClose
使用以下代码和一个名为“ShowUF2”的按钮创建一个简单的用户表单(UserForm1),该按钮将打开第二个用户表单。这是你的主要形式
Public Event ShowUF2ButtonClicked()
Private Sub ShowUF2_Click()
RaiseEvent ShowUF2ButtonClicked
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
Me.Hide
End Sub
仅使用QueryClose代码创建另一个UserForm(UserForm2):
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
Me.Hide
End Sub
现在创建presenter类(presenter)来保存实例并控制显示和隐藏
Private WithEvents UF1 As UserForm1
Private UF2 As UserForm2
Private Sub Class_Initialize()
Set UF1 = New UserForm1
End Sub
Public Sub Present()
UF1.Show vbModal
End Sub
Private Sub UF1_ShowUF2ButtonClicked()
UF1.Hide
Set UF2 = New UserForm2
UF2.Show vbModal
UF1.Show vbModal 'when UF2 is closed, show UF1 again
End Sub
最后,您只需要创建一个演示者并点击“Present”子按钮。这需要在标准模块中
Public Sub ShowUF1()
With New Presenter
.Present
End With
End Sub
完成了!在MsgBox之后,我又添加了一个卸载,现在我正在我的主页上工作。谢谢!
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
Me.Hide
End Sub
Private WithEvents UF1 As UserForm1
Private UF2 As UserForm2
Private Sub Class_Initialize()
Set UF1 = New UserForm1
End Sub
Public Sub Present()
UF1.Show vbModal
End Sub
Private Sub UF1_ShowUF2ButtonClicked()
UF1.Hide
Set UF2 = New UserForm2
UF2.Show vbModal
UF1.Show vbModal 'when UF2 is closed, show UF1 again
End Sub
Public Sub ShowUF1()
With New Presenter
.Present
End With
End Sub