Vba Excel Eval在Eval中

Vba Excel Eval在Eval中,vba,excel,eval,Vba,Excel,Eval,我在VBA中使用自定义求值函数。但是,计算包含另一个eval()的公式失败: I21单元:(公式本身起作用)注意:间接()不起作用 '=MATCH("SOME TEXT",eval($I$22),0) 单元I22:(位置参考) VBA: VBA: 此解决方案仅在单元格引用使用完全限定的范围地址时有效。如果您的引用依赖于调用方(涉及行()+-和列()+-),那么您的情况与我相同,没有解决方案。我认为您应该删除单元格I21(公式)中的“=”。对于递归(eval-in-eval),您可能需要编写自己

我在VBA中使用自定义求值函数。但是,计算包含另一个eval()的公式失败:

I21单元:(公式本身起作用)注意:间接()不起作用

'=MATCH("SOME TEXT",eval($I$22),0)
单元I22:(位置参考)

VBA:

VBA:


此解决方案仅在单元格引用使用完全限定的范围地址时有效。如果您的引用依赖于调用方(涉及行()+-和列()+-),那么您的情况与我相同,没有解决方案。

我认为您应该删除单元格I21(公式)中的“=”。对于递归(eval-in-eval),您可能需要编写自己的解析器。@Gerfried是否愿意进一步解释它?谢谢如果您使用
Eval=Application.Evaluate(Ref)
,它应该可以工作,但您需要确保传递的是完全限定的范围地址。@Rory是的,它可以工作。但只有在同一张纸上。如果我想从另一张纸上对其进行评估,如何实现与ThisCell.Parent相同的效果?正如我所说的-使用完全限定的地址,而不仅仅是I21。
'=MATCH("SOME TEXT",eval($I$22),0)
''1516Activity'!$C:$C
Function Eval(Ref As String)
    Application.Volatile
    Eval = Application.ThisCell.Parent.Evaluate(Ref)
End Function
Eval = Application.Evaluate(Ref)