Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 禁止在单击按钮时运行userform textbox退出代码_Excel_Vba - Fatal编程技术网

Excel 禁止在单击按钮时运行userform textbox退出代码

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 我被要求对表单中的文本框进行验证,以便在填充文本框时使用以下结构检查

我最近开始使用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
这导致了一个问题,即如果用户单击“取消”按钮,控件退出代码将运行并抛出MsgBox,并且用户无法在不输入任何内容的情况下关闭表单


按下“取消”按钮后,是否可以防止控制退出代码运行?

为什么不干脆
卸载我
,而不是
取消=真
?但是为什么仅仅因为文本框中的条目未通过验证就取消表单呢?为什么不让表单保持打开状态,让用户再次尝试输入正确的值呢。但我的意思是删除行
Cancel=True
。完成。请求此操作的人希望这样,如果验证失败,则重点仍然放在所讨论的控件上。我在堆栈上对此进行了研究,发现包括cancel=true行可以实现这个结果。因此,我需要实现的是,只有在没有按下“取消”按钮的情况下,这个验证循环才会运行。