选择具有变量布尔运算符的case

时间:2014-03-23 18:04:35

标签: excel-vba boolean-operations select-case vba excel

这是我在论坛上的第一个问题,但阅读之前的问题对我正在进行的项目非常有帮助,所以我已经感谢了。我无法找到答案,但如果我忽略了某些事情,我会道歉。

我正在vba中编写一个excel宏,并且我正在尝试创建一个select case ...语句,其中表达式具有变量boolean和numeric组件。例如,宏可以拉动"> 3"或"< 3"从另一个工作表。

我希望我可以将所有这些参数分配给一个字符串,即:

test1 = "is " & BoolOperator1 & " " & NumericValue1

然后

Select case ValuetoCompare
    Case test1
      'Do something
    Case test2
       '...

有办法做到这一点吗?我想替代方法是将case与数字变量嵌套在确定运算符的select函数中,但我认为这样会更优雅。

提前感谢您的指导 -

约什

1 个答案:

答案 0 :(得分:0)

假设您将获得一个有效运算符的字符串BoolOperator1,例如>==和数值NumericValue1,在另一个数值ValueToCompare上执行此比较的最简单方法是使用Evaluate函数。这将执行一个字符串作为VBA并返回它的结果。

在您的情况下,您可以简单地使用:

If Evaluate(ValueToCompare&BoolOperator1&NumericValue1) Then ...

如果你想在Select Case语句中使用它,你需要使用一个简单的If ... ElseIf ...语句 - 或者使用这个技巧:

Select Case True
    Case Evaluate(ValueToCompare&BoolOperator1&NumericValue1): ...
    Case Evaluate(ValueToCompare&BoolOperator2&NumericValue2): ...
    Case Else ...
End Select