VBA是否有三元运算符?

我来自基于C编程语言的Obj C的美丽世界,我爱上了寻找节省空间的奇特方法。 但是,我已经查看了尽可能多的文档,并且我无法在VBA上find任何可以缩短此语法的多汁内容:

If boolVar = True Then 'Do something Else 'Do nothing End If 

在对象C中,自然是C,我非常熟悉这样做:

 boolVar ? "Nope, tis false" : "Yup, tis true" 

这与大多数其他语言使用的非常相似,有些可能会使用额外的逻辑运算符,如!===但这让我很乐观。 我可能没有find正确的地方,如果是这样的话,请让我知道你的文档在哪里。

TLDR,我们可以在VBA中缩短If / Then / Else到一行代码吗? 当“做某事”不过是设置另一个variables的单个参数,或启用/禁用一个button时, 这非常方便

 Sub test() Dim x As Long Dim y As Long y = 1 x = IIf(y = 1, 1, 2) End Sub 

最接近的函数是Iif()

 IIf(expr, truepart, falsepart) 

但:

  • 你不能让它的分支只是运行代码,而你必须把它的返回值赋给某个​​variables

  • 它不会短路

    它总是对两个分支进行评估,以便其中一个分支失败,即使不是“真实的”分支,该语句也会抛出错误

所以最类似的说法是:

 If boolVar Then sub1 Else sub2 

哪里:

  • boolVar是一个布尔types的variables

  • sub1sub2是两个不同的子/函数被调用