3

を使用する場合

If Then
'Do Something
Else If
'Do Something
End If 

1 番目と 2 番目の条件が true の場合、最初の条件だけを実行しますか、それとも両方を実行しますか?

何らかの理由で、このコードがある場合:

Dim Report As String

If (DateRange_Pro_TotalCount > 0) Then

        Dim DateRange_Pro_ReportStr As String

        DateRange_Pro_ReportStr = "Total Referrals: " & DateRange_Pro_TotalCount & vbNewLine _

        Report = Report & DateRange_Pro_ReportStr

    ElseIf (DateRange_InPro_TotalCount > 0) Then

        Dim DateRange_InPro_ReportStr As String

        DateRange_InPro_ReportStr = "Total Referrals: " & DateRange_InPro_TotalCount & vbNewLine _

        Report = Report & DateRange_InPro_ReportStr

End If

'next statement prints report variable to textBox

このステートメントは、両方の条件が真であっても、最初の条件のみを実行します。'Else If' を 'End If' と 'If' (2 つの条件を持つ 1 つのステートメントではなく 2 つの diff. 条件付きステートメント) に変更したところ、機能しました。

4

2 に答える 2

2

はい、正解です。最初のブロックのみが実行されます

IF-THEN-ELSE ステートメント (VBA)から

If condition_1 Then
    result_1

 ElseIf condition_2 Then
   result_2
 ...
 ElseIf condition_n Then
    result_n

 Else
   result_else

 End If

condition_1 から condition_n は、リストされた順序で評価されます。条件が真であることが判明すると、IF-THEN-ELSE ステートメントは対応するコードを実行し、それ以上条件を評価しません。

result_1 から result_n は、条件が true であることが判明したときに実行されるコードです。

于 2012-10-01T04:47:36.300 に答える
1

If...ElseIf...EndIfそれが英語で示唆することを正確に行います:

  • If最初の条件が真の場合、最初のブロックを実行します。
  • Elseif2 番目の条件が true の場合、2 番目のブロックを実行します。

あなたの場合、2 つの別々の if ステートメントが必要です。他の条件の結果に関係なく、両方とも個別に評価されます。

于 2012-10-01T04:48:20.410 に答える