验证完成后自动关闭用户窗体
Close the userform automatically after validation is completed
我已经创建了一个登录屏幕,以便在输入有效密码后通过 excel 工作簿进行身份验证。
代码如下:
Private Sub CommandButton1_Click()
name_selected = ComboBox1.Text
pwd_entered = TextBox2.Text
validation_sheet = "Z"
act_p_col_num = 3
Application.Visible = True
For validation_check = 2 To Worksheets(validation_sheet).Cells(Rows.Count, 1).End(xlUp).Row - 1
If (Worksheets(validation_sheet).Cells(validation_check, 1) = name_selected) Then
bk_pd = Worksheets(validation_sheet).Cells(validation_check, act_p_col_num).Value
If (bk_pd = pwd_entered) Then
Worksheets("INDIVIDUAL_TRACKER").Select
MsgBox ("Authentication successful")
UserForm1.Hide
'Set UserForm1.Visible = False
Else
Application.Visible = False
MsgBox ("Please enter a valid password! Account will be locked after 3 tries")
TextBox2.Text = ""
End If
End If
Next validation_check
End Sub
然而,已经使用 unload me
命令和 userform1.hide
尝试了此代码,但仍然抛出 运行 时间错误 424,需要对象。
我的objective是在身份验证通过后转到工作簿,userform
应该会自动关闭。
有人可以帮我解决这个问题吗?
我的猜测是 for 循环的下一次迭代才是真正导致问题的原因。当窗体已卸载时,您尝试访问 if 语句中的 TextBox。
尝试包括行
Exit For
Unload Me
之后
重组 application.visible=True
行已经解决了这个问题。在正确的地方使用它使它工作 well.And 使用 Exit For
是一个额外的优势。
Private Sub CommandButton1_Click()
name_selected = ComboBox1.Text
pwd_entered = TextBox2.Text
validation_sheet = "Z"
act_p_col_num = 3
Application.Visible = True
For validation_check = 2 To Worksheets(validation_sheet).Cells(Rows.Count, 1).End(xlUp).Row - 1
If (Worksheets(validation_sheet).Cells(validation_check, 1) = name_selected) Then
bk_pd = Worksheets(validation_sheet).Cells(validation_check, act_p_col_num).Value
If (bk_pd = pwd_entered) Then
Unload Me
'UserForm1.Hide
'Set UserForm1.Visible = False
Application.Visible = True
Worksheets("INDIVIDUAL_TRACKER").Select
MsgBox ("Authentication successful")
Exit For
Else
'Application.Visible = False
MsgBox ("Please enter a valid password! Account will be locked after 3 tries")
TextBox2.Text = ""
End If
End If
Next validation_check
End Sub
感谢大家,他们对此有所启发 issue.It 很好 brainstorming.Thanks everyone.The 问题现已解决。
我已经创建了一个登录屏幕,以便在输入有效密码后通过 excel 工作簿进行身份验证。
代码如下:
Private Sub CommandButton1_Click()
name_selected = ComboBox1.Text
pwd_entered = TextBox2.Text
validation_sheet = "Z"
act_p_col_num = 3
Application.Visible = True
For validation_check = 2 To Worksheets(validation_sheet).Cells(Rows.Count, 1).End(xlUp).Row - 1
If (Worksheets(validation_sheet).Cells(validation_check, 1) = name_selected) Then
bk_pd = Worksheets(validation_sheet).Cells(validation_check, act_p_col_num).Value
If (bk_pd = pwd_entered) Then
Worksheets("INDIVIDUAL_TRACKER").Select
MsgBox ("Authentication successful")
UserForm1.Hide
'Set UserForm1.Visible = False
Else
Application.Visible = False
MsgBox ("Please enter a valid password! Account will be locked after 3 tries")
TextBox2.Text = ""
End If
End If
Next validation_check
End Sub
然而,已经使用 unload me
命令和 userform1.hide
尝试了此代码,但仍然抛出 运行 时间错误 424,需要对象。
我的objective是在身份验证通过后转到工作簿,userform
应该会自动关闭。
有人可以帮我解决这个问题吗?
我的猜测是 for 循环的下一次迭代才是真正导致问题的原因。当窗体已卸载时,您尝试访问 if 语句中的 TextBox。
尝试包括行
Exit For
Unload Me
重组 application.visible=True
行已经解决了这个问题。在正确的地方使用它使它工作 well.And 使用 Exit For
是一个额外的优势。
Private Sub CommandButton1_Click()
name_selected = ComboBox1.Text
pwd_entered = TextBox2.Text
validation_sheet = "Z"
act_p_col_num = 3
Application.Visible = True
For validation_check = 2 To Worksheets(validation_sheet).Cells(Rows.Count, 1).End(xlUp).Row - 1
If (Worksheets(validation_sheet).Cells(validation_check, 1) = name_selected) Then
bk_pd = Worksheets(validation_sheet).Cells(validation_check, act_p_col_num).Value
If (bk_pd = pwd_entered) Then
Unload Me
'UserForm1.Hide
'Set UserForm1.Visible = False
Application.Visible = True
Worksheets("INDIVIDUAL_TRACKER").Select
MsgBox ("Authentication successful")
Exit For
Else
'Application.Visible = False
MsgBox ("Please enter a valid password! Account will be locked after 3 tries")
TextBox2.Text = ""
End If
End If
Next validation_check
End Sub
感谢大家,他们对此有所启发 issue.It 很好 brainstorming.Thanks everyone.The 问题现已解决。