Vbaの入れ子になったif関数の使い方は?
VBA では、別の IF ステートメント内でIF ステートメントを使用して、ネストされた IF を作成できます。簡単に言うと、別の IF ステートメントの結果に基づいて、IF を使用してテスト ステートメントを実行できます。このタイプの条件文では、複雑な条件をテストする必要があります。例を見てみましょう:
上の例では、条件 1 (1 + 1 = 2) と条件 2 (2 + 2 = 4) の 2 つの条件をテストしています。
ただし、IF ステートメント内の IF ステートメントであるため、VBA は最初に最初の条件をテストしてから、次の IF に進みます。
2 番目の IF には、条件が TRUE かどうかを示すメッセージ ボックスがあります。
Sub myMacro1() 'first if statement If 1 + 1 = 2 Then 'second if statement If 2 + 2 = 4 Then MsgBox True End If Else MsgBox False End If End Sub
1 つの IF で複数の IF を使用する例を次に示します。
前に使用した例と上記の例には違いがあります。このコードでは、「Else」にネストされた条件を使用しました。
最初の条件が true でない場合、VBA は「Else」にジャンプして条件をテストし、その条件が true でない場合は次の条件に進みます。
このようにして、合計 4 つの条件をテストすることができます。
Sub myMacro2() Dim myScore As Single: myScore = Range("A1").Value If myScore >= 80 Then MsgBox "Excellent" Else If myScore >= 60 And myScore < 80 Then MsgBox "Good" Else If myScore >= 40 And myScore < 60 Then MsgBox "Average" Else If myScore < 40 Then MsgBox "Poor" End If End If End If End If End Sub
このネストされた IF ステートメントは、セル A1 のスコアをテストし、それに応じてメッセージ ボックスを表示します。
VBA 複数行のネストされた IF (IF)
2 つの異なる IF を使用して、両方の結果 (True と False) を実行することもできます。
上の例では、ご覧のとおり、最初にテストする条件が 1 つあり、その条件が TRUE の場合、次に別の条件をテストし、2 番目の条件が TRUE の場合、メッセージ ボックスが表示されます。
主な条件が false の場合、テストする別の条件があり、その条件が true の場合はメッセージ ボックスが表示されます。
Sub myMacro3() If 1 + 1 = 2 Then If 2 - 1 = 1 Then MsgBox "Condition1 is TRUE." End If Else If 3 - 2 = 1 Then MsgBox "Condition2 is TRUE." End If End If End Sub