VBA – 评估返回#VALUE

Evaluate公式在testing工作簿中正常工作。 所有的结果都不错。

完全相同的代码返回工作簿中我应该使用的(包含其他macros)中的#Value 。 错误代码是2029.另外,当我只在表单中input代码产生的公式(无论是在debugging时,还是直接在代码中),结果都是正确的,如果我在Ctrl + Shft + Enter的单元格中公式是。

因此,我所了解的是该公式不是由Application.Evaluate评估的。 任何可能的原因提示? 以下是代码的一部分

Const TEMPLATE = "=INDEX({0},MATCH(1,({1}={2})*({3}={4}),{5}))" Const MATCH_TYPE = 0 Dim originalReferenceStyle originalReferenceStyle = xlA1 Application.ReferenceStyle = xlR1C1 Dim myFormula As String myFormula = Replace(TEMPLATE, "{0}", amountRange.Address(External:=True)) myFormula = Replace(myFormula, "{1}", accountRange.Address(External:=True)) myFormula = Replace(myFormula, "{2}", accountCriteria.Address(External:=True)) myFormula = Replace(myFormula, "{3}", dateRange.Address(External:=True)) myFormula = Replace(myFormula, "{4}", dateCriteria.Address(External:=True)) myFormula = Replace(myFormula, "{5}", MATCH_TYPE) myIndexMatch = Application.Evaluate(myFormula) 

如果您遇到类似问题,请尝试减less配方的长度! 看来,评估不喜欢超过255个字符的公式(与FormulaArray相同)! 请注意,如果您在公式中使用(External:= True)引用范围,则会包含该文件的名称…在我的示例中,将文件名缩小为2个字母就是一个窍门! 希望这将有助于…