我最近开始使用userform来控制excel电子表格中的捕获信息,然后由后续宏使用。表单有一系列文本框,然后是按钮,可以执行填充或取消表单。
“完成”和“取消”按钮的代码如下:
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
这导致了一个问题,即如果用户单击“取消”按钮,Control_Exit代码将运行并抛出MsgBox,并且用户无法在不放入任何输入的情况下关闭表单。
是否可以在按下取消按钮后阻止control_exit代码运行?