Excel 禁止在单击按钮时运行userform textbox退出代码
我最近开始使用userform来控制excel电子表格中的捕获信息,然后由后续宏使用。表单有一系列的文本框,然后是按钮,用于执行操作或取消表单 完成和取消按钮的代码如下所示:Excel 禁止在单击按钮时运行userform textbox退出代码,excel,vba,Excel,Vba,我最近开始使用userform来控制excel电子表格中的捕获信息,然后由后续宏使用。表单有一系列的文本框,然后是按钮,用于执行操作或取消表单 完成和取消按钮的代码如下所示: Private Sub buttonAddAndDone_Click() DoStuff Unload Me End Sub Private Sub buttonCancel_Click() Unload Me End Sub 我被要求对表单中的文本框进行验证,以便在填充文本框时使用以下结构检查
Private Sub buttonAddAndDone_Click()
DoStuff
Unload Me
End Sub
Private Sub buttonCancel_Click()
Unload Me
End Sub
我被要求对表单中的文本框进行验证,以便在填充文本框时使用以下结构检查信息。在某些情况下,它是强制输入,在另一些情况下,它会检查它是日期还是数字,但代码的结构如下所示:
Private Sub Control_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If (IsNull(Control.Value)) Or Control.Value = "" Then
MyAnswer = MsgBox("Control Value is necessary", vbExclamation, "Macro Error")
Cancel = True
End If
End Sub
这导致了一个问题,即如果用户单击“取消”按钮,控件退出代码将运行并抛出MsgBox,并且用户无法在不输入任何内容的情况下关闭表单
按下“取消”按钮后,是否可以防止控制退出代码运行?为什么不干脆
卸载我
,而不是取消=真
?但是为什么仅仅因为文本框中的条目未通过验证就取消表单呢?为什么不让表单保持打开状态,让用户再次尝试输入正确的值呢。但我的意思是删除行Cancel=True
。完成。请求此操作的人希望这样,如果验证失败,则重点仍然放在所讨论的控件上。我在堆栈上对此进行了研究,发现包括cancel=true行可以实现这个结果。因此,我需要实现的是,只有在没有按下“取消”按钮的情况下,这个验证循环才会运行。