Boolean表記とIIF関数

IF-ELSE文で次のようなコードを書くときに5行も使うの嫌ですよね。

    Dim fFlag   As Boolean
    If buff = "EP9 sucks" Then
        fFlag = True
    Else
        fFlag = False
    End If

IIF関数なら1行で書けます。
    fFlag = IIf(buff = "EP9 sucks", True, False)

でも、ステートメントでBoolean評価してくれるって知ってましたか?。しかも、IIF関数よりも4倍早いです。
    fFlag = (buff = "EP9 sucks")

 

IIF関数はTrueパートとFalseパート両方とも実行されてしまうので、初期化されていないオブジェクトを参照するようなコードを書くとエラーになってしまいます。そういう場合は、おとなしくIF-ELSE構造にするか、実行時エラーにならないようにオブジェクトを初期化するとか、注意してください。