【问题标题】:Nested IF In Visual BasicVisual Basic 中的嵌套 IF
【发布时间】:2020-10-06 13:57:10
【问题描述】:

我想做一个程序 “贷款将被接受,如果 收入超过 30,000 并且在工作超过 2 年或在工作超过 5 年。 年龄在 30 - 50 岁之间。

但是没有用

If sngSalary > 30000 Then
    If sngAge < 50 Then
        If sngYear > 5 Then
            lblMessage.Text = "Application qualifies"
        Else
            lblMessage.Text = "Application does not qualifies"
        End If
    Else
         If sngYear >= 2 Then
            lblMessage.Text = "Application qualifies"
         Else
            lblMessage.Text = "Application does not qualifies"
         End If
    End If
Else
    If sngAge > 30 Then
         If sngYear > 5 Then
             lblMessage.Text = "Application qualifies"
         Else
             lblMessage.Text = "Application does not qualifies"
         End If
    Else
         If sngYear >= 2 Then
             lblMessage.Text = "Application qualifies"
         Else
             lblMessage.Text = "Application does not qualifies"
         End If
    End If
End If

【问题讨论】:

    标签: vba nested-if


    【解决方案1】:

    只需像您在描述中所说的那样对其进行编码:

    Private Sub Test()
       If (sngSalary > 30000 And sngYear > 2) Or (sngYear > 5 And sngAge >= 30 And sngAge <= 50) Then
          lblMessage.Text = "Application qualifies"
       Else
          lblMessage.Text = "Application does not qualifies"
       End If
    End Sub
    

    【讨论】:

      【解决方案2】:

      通常可以通过将代码移至函数并修改逻辑来简化复杂的逻辑,以便在不满足条件时提前离开函数。在编写这样一个函数时,我试图将逻辑限制为简单的是/否门。

      OP对所需条件的表述比较混乱,所以下面的代码可能不正确,但它确实说明了原理。

      Option Explicit
      
      Public Function IsEligible(ByVal ipSalary As Long, ByVal ipAge As Long, ByVal ipEmploymentTime As Long) As String
      
          IsEligible = "Application does not qualify"
          If ipEmployment < 2 Then Exit Function
          
          If ipSalary < 30000
          
              If ipEmploymentTime < 5 Then Exit Function
              If ipAge < 30 Then Exit Function
              If ipAge > 50 Then Exit Function
          
          End If
          
          IsEligible = "Application qualifies"
          
      End Function
      
      

      【讨论】:

      • 我喜欢这个想法并且经常在我的代码中使用它。一个想法:我希望该函数根据其名称返回一个布尔值。
      • @BrianMStafford 你当然是正确的。写到一半就改变主意了,没有更新函数签名。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      相关资源
      最近更新 更多