我正在编写一个if语句,该语句基于5个独立的条件是否大于零。
我想根据0条条件> 0、1条条件> 0,2等等...最多5条条件> 0来创建6个独立的if语句。解决方案。
我要追求的是:
If 0 Criteria > 0 Then
Do this
ElseIf 1 Criteria > 0 Then
Do this
ElseIf 2 Criteria > 0 Then
Do this
....
ElseIf 5 Criteria > 0 Then
Do this
End If
答案 0 :(得分:1)
您可以将SUMPRODUCT用于一系列条件的评估
Option Explicit
Public Sub test()
Dim criteria1 As Long, criteria2 As Long,criteria3 As Long
Dim criteria4 As Long, criteria5 As Long, arr()
Dim numGreaterThanZero As Long
criteria1 = -1
criteria2 = 3
criteria3 = 0
criteria4 = 5
criteria5 = 6
arr = Array(criteria1, criteria2, criteria3, criteria4, criteria5)
numGreaterThanZero = Application.Evaluate("=SUMPRODUCT(--({" & Join$(arr, ";") & "}>0))")
Select Case numGreaterThanZero
Case 1
Case 2
Case 3
Case 4
Case 5
End Select
End Sub
如果您实际上只是想单独测试条件(而不是累计计数)并首先退出True,则:
Select Case True
Criteria1 > 0
'Do Something
Criteria2> 0
'Do something else
End Select
答案 1 :(得分:1)
(未经测试)
Dim c as long
c = 0
If criteria1 = 0 then CritNo = CritNo + 1
If criteria2 = 0 then CritNo = CritNo + 1
If criteria3 = 0 then CritNo = CritNo + 1
If criteria4 = 0 then CritNo = CritNo + 1
If criteria5 = 0 then CritNo = CritNo + 1
If criteria6 = 0 then CritNo = CritNo + 1
Select case CritNo
Case 1
Do stuff
Case 2
Do other stuff
...
Case Else
Do nothing
End select
答案 2 :(得分:1)
这是另一个主意:
Select Case Abs(criteria1 > 0) + Abs(criteria2 > 0) + Abs(criteria3 > 0) + Abs(criteria4 > 0) + Abs(criteria5 > 0)
Case 0
MsgBox "0 criteria"
Case 1
MsgBox "1 criteria"
Case 2
MsgBox "2 criteria"
Case 3
MsgBox "3 criteria"
Case 4
MsgBox "4 criteria"
Case 5
MsgBox "5 criteria"
End Select