Function MySwitch(ParamArray a() As Variant)
Dim d As Integer
Dim result As Variant
d = UBound(a)
myexp = a(0)
On Error GoTo ErrHandler
If d Mod 2 <> 0 Then
For i = 1 To d - 1
If a(i) Like ">#*" Then
a(i) = CInt(Replace(a(i), ">", ""))
Select Case myexp
Case Is > a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "<#*" Then
a(i) = CInt(Replace(a(i), "<", ""))
Select Case myexp
Case Is < a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "=#*" Then
a(i) = CInt(Replace(a(i), "=", ""))
Select Case myexp
Case a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "<>#*" Then
a(i) = CInt(Replace(a(i), "<>", ""))
Select Case myexp
Case Is <> a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "><#*" Then
a(i) = CInt(Replace(a(i), "><", ""))
Select Case myexp
Case Is <> a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "=>#*" Then
a(i) = CInt(Replace(a(i), "=>", ""))
Select Case myexp
Case Is >= a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like ">=#*" Then
a(i) = CInt(Replace(a(i), ">=", ""))
Select Case myexp
Case Is >= a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "=<#*" Then
a(i) = CInt(Replace(a(i), "=<", ""))
Select Case myexp
Case Is <= a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "<=#*" Then
a(i) = CInt(Replace(a(i), "<=", ""))
Select Case myexp
Case Is <= a(i)
result = a(i + 1)
End Select
Else
Select Case myexp
Case a(i)
result = a(i + 1)
End Select
End If
If Not result = vbNullString Then
MySwitch = result
Exit Function
End If
i = i + 1
Next i
result = a(d)
ElseIf d Mod 2 = 0 Then
For i = 1 To d
If a(i) Like ">#*" Then
a(i) = CInt(Replace(a(i), ">", ""))
Select Case myexp
Case Is > a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "<#*" Then
a(i) = CInt(Replace(a(i), "<", ""))
Select Case myexp
Case Is < a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "=#*" Then
a(i) = CInt(Replace(a(i), "=", ""))
Select Case myexp
Case a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "<>#*" Then
a(i) = CInt(Replace(a(i), "<>", ""))
Select Case myexp
Case Is <> a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "><#*" Then
a(i) = CInt(Replace(a(i), "><", ""))
Select Case myexp
Case Is <> a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "=>#*" Then
a(i) = CInt(Replace(a(i), "=>", ""))
Select Case myexp
Case Is >= a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like ">=#*" Then
a(i) = CInt(Replace(a(i), ">=", ""))
Select Case myexp
Case Is >= a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "=<#*" Then
a(i) = CInt(Replace(a(i), "=<", ""))
Select Case myexp
Case Is <= a(i)
result = a(i + 1)
End Select
ElseIf a(i) Like "<=#*" Then
a(i) = CInt(Replace(a(i), "<=", ""))
Select Case myexp
Case Is <= a(i)
result = a(i + 1)
End Select
Else
Select Case myexp
Case a(i)
result = a(i + 1)
End Select
End If
If Not result = vbNullString Then
MySwitch = result
Exit Function
End If
i = i + 1
Next i
End If
MySwitch = result
Exit Function
ErrHandler:
If Err.Number <> 0 Then
Msg = "Error # " & Str(Err.Number) & " was generated by " _
& Err.Source & Chr(13) & "Error Line: " & Erl & Chr(13) & Err.Description
MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
MySwitch = Err.Description
End If
End Function
주석없이 마이너스를 보내 주셔서 감사합니다. – donmichael
이것은 질문이 아니므로 아래/닫기 투표입니다. 일부 작업 코드를 검토하려면 - [코드 검토] (http://codereview.stackexchange.com)에 게시하십시오 (스택 오버플로가 아님). –