2016-04-26 90 views
3

我在VBA中使用自定義評估函數。然而,評估其中包含另一個eval()函數的公式失敗:Eval內的Excel評估

=Eval(I21) 

細胞I21:(公式本身作品)注:INDIRECT()does not工作太

'=MATCH("SOME TEXT",eval($I$22),0) 

細胞I22:(位置參考)

''1516Activity'!$C:$C 

VBA:

Function Eval(Ref As String) 
    Application.Volatile 
    Eval = Application.ThisCell.Parent.Evaluate(Ref) 
End Function 
+0

我想你應該刪除單元格I21(公式)中的「=」。對於遞歸(在eval中的eval),你可能需要編寫你自己的解析器。 – Gerfried

+0

@Gerfried思想進一步闡述?謝謝! –

+2

如果您使用'Eval = Application.Evaluate(Ref)',它應該可以工作,但您需要確保您傳遞完全合格的範圍地址。 – Rory

回答

1

VBA:僅

Eval = Application.Evaluate(Ref) 

此解決方案時,小區的參考使用完全限定的範圍內的地址的工作原理。如果你的引用取決於調用者(涉及row()+ - 和column()+ - ),那麼你和我的情況一樣,沒有解決方案。