VBA SumProduct运行时错误13

时间:2014-12-29 22:28:07

标签: 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") * (Workbooks(Source2).Sheets("Prices_EUR_Adj").Range(ColLtr & ":" & ColLtr)))
MsgBox SumPr

但是,由于某种原因,我一直收到运行时错误13。知道什么是错的吗? Source2已正确定义,ColLtr是从匹配中获得的列号的字母转换;通过消息框检查它也可以正常工作。

1 个答案:

答案 0 :(得分:0)

请尝试使用Evaluate功能:

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功能更轻松。