当前位置:  开发笔记 > 后端 > 正文

VBA有三元运算符吗?

如何解决《VBA有三元运算符吗?》经验,为你挑选了2个好方法。

我来自Obj C的美丽世界,它基于C编程语言,我爱上了寻找节省空间的古怪方法.但是,我已经查看了尽可能多的文档,我在VBA上找不到任何会缩短这种语法的东西:

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

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

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

这与其他大多数联盟使用的非常类似,有些可能会使用额外的逻辑运算符!=,==但这让我很乐观.我可能没有找到合适的地方,如果是这样的话,请告诉我你的文件在哪里.

TLDR,我们可以将If/Then/Else缩短为VBA中的一行代码吗?当"Do Somethings"只不过是设置另一个变量的单个参数,或启用/禁用按钮时,这非常方便.



1> cyboashu..:
Sub test()

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

End Sub


@soulshined您不必将变量设置为函数; `IIF`内置于VBA中.它在很大程度上类似于C中的三元运算符,但是正如其他人指出的那样它不会短路并且它是一个函数调用.这里是用你的例子:`IIF(boolVar,"Yup,tis true","Nope,tis false")`.

2> user3598756..:

最接近的功能是 Iif()

IIf(expr, truepart, falsepart)

但:

你不能让它的分支只是简单地运行代码,而你必须将它的返回值赋给某个​​变量

它不会短路

它总是评估两个分支,这样如果其中一个分支失败,即使不是"真正的"分支,该语句仍会抛出错误

所以最相似的陈述是:

If boolVar Then sub1 Else sub2 

哪里:

boolVar 是一个布尔类型变量

sub1并且sub2是要调用的两个不同的子/函数

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有