sou*_*ned 22 excel vba excel-vba
我来自Obj C的美丽世界,它基于C编程语言,我爱上了寻找节省空间的古怪方法.但是,我已经查看了尽可能多的文档,我在VBA上找不到任何会缩短这种语法的东西:
If boolVar = True Then
'Do something
Else
'Do nothing
End If
Run Code Online (Sandbox Code Playgroud)
在Obj C中,自然是C,我非常熟悉这样做:
boolVar ? "Nope, tis false" : "Yup, tis true"
Run Code Online (Sandbox Code Playgroud)
这与其他大多数联盟使用的非常类似,有些可能会使用额外的逻辑运算符!=,==但这让我很乐观.我可能没有找到合适的地方,如果是这样的话,请告诉我你的文件在哪里.
TLDR,我们可以将If/Then/Else缩短为VBA中的一行代码吗?当"Do Somethings"只不过是设置另一个变量的单个参数,或启用/禁用按钮时,这非常方便.
cyb*_*shu 29
Sub test()
Dim x As Long
Dim y As Long
y = 1
x = IIf(y = 1, 1, 2)
End Sub
Run Code Online (Sandbox Code Playgroud)
use*_*756 18
最接近的功能是 Iif()
IIf(expr, truepart, falsepart)
Run Code Online (Sandbox Code Playgroud)
但:
你不能让它的分支只是简单地运行代码,而你必须将它的返回值赋给某个变量
它不会短路
它总是评估两个分支,这样如果其中一个分支失败,即使不是"真正的"分支,该语句仍会抛出错误
所以最相似的陈述是:
If boolVar Then sub1 Else sub2
Run Code Online (Sandbox Code Playgroud)
哪里:
boolVar 是一个布尔类型变量
sub1并且sub2是要调用的两个不同的子/函数
小智 5
作为替代方案,您可以在模块中创建以下公共函数:
Public Function iff(expr, trueR, falseR) As Variant
If expr Then iff = trueR Else iff = falseR
End Function
Run Code Online (Sandbox Code Playgroud)
到目前为止对我有用。
| 归档时间: |
|
| 查看次数: |
17357 次 |
| 最近记录: |