问题描述
我想制作一个程序 “如果贷款符合条件, 收入超过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
解决方法
只需按照描述中所说的完全将其编码:
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
,
通常可以通过将代码移至函数并修改逻辑来简化复杂的逻辑,以便在不满足条件的情况下尽早离开函数。在编写此类函数时,我尝试将逻辑限制为简单的是/否门。
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