2012-10-15 149 views
1

有没有办法在Excel VBA中构建动态if语句?基本上我试图建立一个parametised计算,其中的用户将能够进入不同的变量,即动态IF语句

变量1“变量2”“变量3”

在这种情况下 变量1是单元格引用 变量2将是=或<或>等 可变2将是一个单元格引用

因此我的If语句声明将是 如果变量1 varaible2 variable3然后“Y”其他的“n”

当我尝试在代码

If FinalvaluesArray(ArrayRow, 5) & SRCBook.Sheets("Filter Parameters").Cells(2, 4).Value & SRCBook.Sheets("Filter Parameters").Cells(2, 3).Value Then wbNew.Sheets("Output Table").Range(ResultString) = "Y" Else wbNew.Sheets("Output Table").Range(ResultString) = N" 

它似乎并不正确评价的表达,但似乎总是返回真值。无论如何buld这样的功能?

我试图bulding的表达了作为一个字符串第一,并且有这样的代码:

EvaluateFunction = FinalvaluesArray(ArrayRow, 5) & SRCBook.Sheets("Filter Parameters").Cells(2, 4).Value & SRCBook.Sheets("Filter Parameters").Cells(2, 3).Value 

If EvaluateFunction= true Then "Y" Else "N" 

但也没有工作

回答

3

如果你相信从你的变量来源,那么你可以简单地做

If Application.Evaluate(FinalvaluesArray(ArrayRow, 5) & SRCBook.Sheets("Filter Parameters").Cells(2, 4).Value & SRCBook.Sheets("Filter Parameters").Cells(2, 3).Value) Then 
    .... 
End If 

否则有可能运行任意代码,所以你可能要检查的值是在这样做之前的数字和/或运营商。

+0

+1,我完全误解了这个问题。这是正确的答案。唯一的选择是创建一个采用这三个参数并返回true或false的函数,但这更简单。 –