Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Vba 使用两个单独的if条件的正确方式_Vba_Excel_If Statement - Fatal编程技术网

Vba 使用两个单独的if条件的正确方式

Vba 使用两个单独的if条件的正确方式,vba,excel,if-statement,Vba,Excel,If Statement,在名为ExportFiles的函数中,我有两个单独的IF检查列表框。如果其中一个检查失败(listbox为空,或者没有选择任何listbox项-我还有另一个函数要检查),我希望函数结束。目前我已经这样写了,但它似乎重复和太长。如果我将条件组合成一个OR和一个If,那么我无法通过两个不同的MSGBoxe指定错误。有没有其他方法使代码更简洁 If MYBOX.ListCount = 0 Then MsgBox "ListBox is empty" ExportFiles = Fals

在名为
ExportFiles
的函数中,我有两个单独的IF检查列表框。如果其中一个检查失败(listbox为空,或者没有选择任何listbox项-我还有另一个函数要检查),我希望函数结束。目前我已经这样写了,但它似乎重复和太长。如果我将条件组合成一个OR和一个If,那么我无法通过两个不同的MSGBoxe指定错误。有没有其他方法使代码更简洁

If MYBOX.ListCount = 0 Then
    MsgBox "ListBox is empty"
    ExportFiles = False
    Exit Function             
End If

If Not IsBoxSelected(MYBOX) Then 
    MsgBox "Nothing is selected in ListBox"
    ExportFiles = False
    Exit Function 
End If

是的,但是我仍然需要在结构的每个部分重复行
ExportFiles=False
Exit Function
,对吗?如果我只是让每个if返回一个错误代码,然后将其传递给其他对象,那么即使第一次检查已经失败,执行第二次检查也会牺牲速度。如何使
MsgBox
消息足够通用,以描述这两种情况?然后只需使用
。这个问题可能并没有一个“正确”的答案,可能更适合于堆栈交换代码的检查。但这也会牺牲速度吗?基本上,如果其中一个检查失败,我希望函数完成。检查1最常失败,所以我把它放在第一位。如果我有一个OR,那么即使检查1失败,检查2仍然不必要地执行,对吗?或者,一旦发现第一个失败的条件,是否立即执行或退出?对。在这种情况下,您需要重复ExportFiles=False和Exit函数。@Marc在函数开始时将函数值设置为False,然后在函数结束时将其设置为TRUE,这样,如果出现任何不可预见的错误,它最终还是会返回False,这是一种好的做法吗?如果是这样,那么我可以更早地定义它,并且只重复Exit Function命令。