0

这是我在论坛上的第一个问题,但是阅读以前的问题对我正在从事的项目非常有帮助,所以我已经感谢了。我找不到这个问题的答案,但如果我忽略了一些东西,我深表歉意。

我正在 vba 中编写一个 excel 宏,并尝试创建一个 select case... 语句,其中表达式具有可变的布尔值和数字分量。例如,宏可以从另一个工作表中提取“> 3”或“< 3”。

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

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

接着

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

有没有办法做到这一点?我想另一种选择是将带有数字变量的案例嵌套在确定运算符的选择函数中,但我认为这会更优雅。

提前感谢您的指导--

乔什

4

1 回答 1

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
于 2014-03-23T19:20:29.237 回答