Skip to content

If

根据条件返回两个值之一,仅评估返回的分支。If是twinBASIC新增项;在VBA中,最接近的等价物是IIf,它始终评估两个分支。

语法:

  • If( expression , truepart , falsepart )
  • If( expressiontruepart , falsepart )
expression
必需 为其真值评估的表达式。可以是任何可转换为Boolean的表达式。
truepart
必需expressionTrue时返回的值或表达式。在三参数形式中,仅当expressionTrue时才评估。
falsepart
必需expressionFalse,或expressiontruepartNullEmptyNothing时返回的值或表达式。仅在实际需要时评估。
expressiontruepart
必需(在两参数形式中)同时作为测试和"已设置"时返回值的表达式。函数返回expressiontruepart,除非它为NullEmptyNothing对象引用,在这种情况下返回falsepart。适用于空值合并——例如If(MaybeNothing, FallbackValue)

三参数形式是内联条件:当expressionTrue时返回truepart,否则返回falsepart,仅评估所选分支。这使得诸如If(Divisor <> 0, 100 / Divisor, "n/a")的表达式即使Divisor为零也是安全的。

INFO

If在编译器中使用特殊的内部绑定,可能不像常规函数那样运行——特别是Application.Run "If", ...和其他反射调用者不会调用它。

示例

vb
Dim Divisor As Long
Divisor = 0

' Three-argument form — short-circuits, so the division never happens when Divisor = 0.
Dim Result As Variant
Result = If(Divisor <> 0, 100 / Divisor, "n/a")     ' "n/a"

' Two-argument form — null-coalescing.
Dim MaybeName As Variant
MaybeName = Null
Debug.Print If(MaybeName, "Anonymous")              ' "Anonymous"

MaybeName = "Alice"
Debug.Print If(MaybeName, "Anonymous")              ' "Alice"

另请参阅

twinBASIC及其LOGO版权为作者"韦恩"所有