HOME > 即効テクニック > Excel VBA > 関数関連のテクニック > 評価に応じた式を返す(IIf関数)

即効テクニック

関数関連のテクニック

評価に応じた式を返す(IIf関数)

(Excel 2000)
IIf関数は、評価対象の式の結果によって、2つの引数のうちの1つを返します。


  構文 IIf(Expr, Truepart, Falsepart)

 設定項目        内容
  Expr      評価対象の式を指定する [省略不可]
  Truepart    評価対象の式がTrueの場合に返す値か式 [省略不可]
  Falsepart    評価対象の式がFalseの場合に返す値か式 [省略不可]


●サンプル1●
Sub IIfSamp1()
    Dim Ret As Integer

    Ret = MsgBox("EXCEL VBAは楽しいですか?", vbYesNo)
    '---変数Retの値に応じて、表示するメッセージを変更します
    MsgBox IIf(Ret = vbYes, "素晴らしいことです!!", "楽しく勉強しましょう!")

End Sub
この例では、最初のメッセージボックスで押されたボタンの種類に応じて、次に表示するメッセージの種類を変更しています。

●注意●
IIf関数はIf...Then...Elseステートメントに似ていますが、決定的に違う点があります。
それは、エラーを回避するためにIIf関数で処理の分岐をさせる、というような使い方に向いていないという点です。次のステートメントを見てください。

myVal = IIf(myVal = 0, 0, 1 / myVal)

変数myValが0以外の場合には、myValの逆数を計算する、という処理をするつもりで書かかれたものですが、実際に0を当てはめた場合には、0で除算することによるエラーが発生します。何故このようなことが発生するかというと、IIf関数はTrue、Falseにかかわらず、両方の式を評価するためです。注意して使うようにしてください。