patternMinor
If ComparisonIsTrue(thisPost, ComparisonOperator.NotEqualTo, goodCode) Then Me.Answer
Viewed 0 times
goodcodeanswercomparisonoperatorthispostcomparisonistruenotequaltothen
Problem
This is a follow-on to a global enum for comparison operators. I wanted to pass a logical expression E.G.
Is my approach a good way to implement this functionality in VBA?
>= someValue as a parameter to a function, so I made an Enum and an accompanying function to analyse logical expressions.Is my approach a good way to implement this functionality in VBA?
Public Enum ComparisonOperator
NotEqualTo = 0
LessThan = 1
LessThanOrEqualTo = 2
EqualTo = 3
GreaterThanOrEqualTo = 4
GreaterThan = 5
End EnumPublic Function ComparisonIsTrue(ByVal sourceValue As Variant, ByVal operator As ComparisonOperator, ByVal comparisonValue As Variant) As Boolean
If IsNull(sourceValue) Or IsNull(comparisonValue) Then GoTo CleanFail
If IsObject(sourceValue) Or IsObject(comparisonValue) Then GoTo CleanFail
Dim isTrue As Boolean
Select Case operator
Case NotEqualTo
isTrue = (sourceValue <> comparisonValue)
Case LessThan
isTrue = (sourceValue = comparisonValue)
Case GreaterThan
isTrue = (sourceValue > comparisonValue)
Case Else
'/ Error Handling
Stop
End Select
CleanExit:
ComparisonIsTrue = isTrue
Exit Function
CleanFail:
isTrue = False
GoTo CleanExit
End FunctionSolution
I really don't like your
And gone are your gotos.
GoTos...If IsNull(sourceValue) Or IsNull(comparisonValue)
Or IsObject(sourceValue) Or IsObject(comparisonValue) Then
ComparisonIsTrue = False
Exit Function
End IfAnd gone are your gotos.
Code Snippets
If IsNull(sourceValue) Or IsNull(comparisonValue)
Or IsObject(sourceValue) Or IsObject(comparisonValue) Then
ComparisonIsTrue = False
Exit Function
End IfContext
StackExchange Code Review Q#122582, answer score: 7
Revisions (0)
No revisions yet.