2012-10-15 108 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的函數,但這更簡單。 –