【问题标题】:If Statements VBA ACCESS 2010如果语句 VBA 访问 2010
【发布时间】:2016-07-09 04:22:56
【问题描述】:

使用时

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

如果第一个和第二个条件为真,是只执行第一个还是同时执行两个?

出于某种原因,当我有此代码时:

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”(两个不同的条件语句,而不是一个具有两个条件的语句)并且它起作用了。

【问题讨论】:

    标签: vba if-statement ms-access-2010


    【解决方案1】:

    是的,你是对的,它只会执行第一个块

    来自IF-THEN-ELSE Statement (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 是条件满足后执行的代码 发现是真的。

    【讨论】:

      【解决方案2】:

      If...ElseIf...EndIf 完全按照英语的建议:

      • If 第一个条件为真,执行第一个块。
      • Else,if第二个条件为真,执行第二个块。

      在您的情况下,您需要两个单独的 if 语句;无论其他条件的结果如何,它们都将被独立评估。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 2013-03-13
        • 2015-07-26
        • 1970-01-01
        • 1970-01-01
        • 2015-05-08
        • 1970-01-01
        相关资源
        最近更新 更多