在MS Access VBA中,我使用不同的参数在不同的方法中进行了不同的检查。只要其中一个失败,Cancel就会设置为True,不再执行进一步的检查。它看起来像是:
Cancel = checkMethodOne(param1)
If Not Cancel Then
Cancel = checkMethodTwo(param2, param3)
End If
If Not Cancel Then
Cancel = checkMethodThree(param4)
End If
......等等。有没有一种方法可以更优雅地编码,而不重复"如果不取消那么"条款?
类似于"虽然没有取消"由于具有单独名称和参数的不同方法,这似乎是一个问题。有什么想法吗?
答案 0 :(得分:2)
您可以使用And
来评估多个语句,如果返回false,则返回false:
Cancel = checkMethodOne(param1) And checkMethodTwo(param2, param3) And checkMethodThree(param4)
如果方便,可能取决于具体情况。它更短,更多代码高尔夫球,但可能更令人困惑。
请注意,这会评估所有功能,因此如果它们性能密集,则可能会运行一段时间
或者,您可以尝试以下Select case
以避免执行所有比较:
Cancel = True
Select Case True
Case checkMethodOne(param1)
Case checkMethodTwo(param2, param3)
Case checkMethodThree(param4)
Case Else
Cancel = False
End Select
答案 1 :(得分:2)
您还可以使用简单的 If-ElseIf 块:
If checkMethodOne(param1) Then
Cancel = True
ElseIf checkMethodTwo(param2, param3) Then
Cancel = True
ElseIf checkMethodThree(param4) Then
Cancel = True
End If
替代:
Cancel = True
If checkMethodOne(param1) Then
ElseIf checkMethodTwo(param2, param3) Then
ElseIf checkMethodThree(param4) Then
Else
Cancel = False
End If