VBA SumProduct运行时错误13

VBA SumProduct运行时错误13,vba,runtime-error,Vba,Runtime Error,作为更长代码的一部分,我试图包含一个SumProduct Dim SumPr as Variant SumPr=Application.WorksheetFunction.SumProduct(((Workbooks(Source2).Sheets("Prices_EUR_Adj").Range("A:A")) = Range("A" & i)) * ((Workbooks(Source2).Sheets("Prices_EUR_Adj").Range("D:D")) = "PH")

作为更长代码的一部分,我试图包含一个SumProduct

Dim SumPr as Variant

SumPr=Application.WorksheetFunction.SumProduct(((Workbooks(Source2).Sheets("Prices_EUR_Adj").Range("A:A")) = Range("A" & i)) * ((Workbooks(Source2).Sheets("Prices_EUR_Adj").Range("D:D")) = "PH") * (Workbooks(Source2).Sheets("Prices_EUR_Adj").Range(ColLtr & ":" & ColLtr)))
MsgBox SumPr

然而,由于某些原因,我一直得到运行时错误13。你知道怎么了吗?Source2定义正确,ColLtr是我从match得到的列号的字母转换;通过消息框选中,它也可以正常工作。

尝试改用
评估
功能:

Dim SumPr As Variant

SumPr = Application.Evaluate("SUMPRODUCT(--(" & Workbooks(Source2).Sheets("Prices_EUR_Adj").Range("A:A").Address & "=" & Range("A" & i).Address & ")," & _
                                        "--(" & Workbooks(Source2).Sheets("Prices_EUR_Adj").Range("D:D").Address & "=""PH"")," & _
                                        Workbooks(Source2).Sheets("Prices_EUR_Adj").Range(ColLtr & ":" & ColLtr).Address & ")")
MsgBox SumPr

我确信
WorksheetFunction.SumProduct
也可以工作,但是我能够让
Evaluate
函数更容易工作。

您是否尝试过先在工作表中编写
SumProduct
公式来检查公式是否有效?是,实际上,我首先记录了公式,然后我重写了它,因为我需要在最后一列中的相对引用(在vlookup之前,我使用匹配函数搜索列数,并将其转换为列的字母表示)…当你说它通过消息框检查正常时是什么意思?-它给了我它应该的值,例如,“MB”(加上这个代码是从这个论坛的某个地方获取的,它为这个人工作)那么你从哪里得到了错误?非常感谢!!!它是这样工作的。。。顺便说一句,工作表功能和评估有什么区别?很高兴我能帮上忙!这两种功能之间确实没有区别。在我看来,
Evaluate
在直接从工作表复制函数时更容易使用。