当公式工作正常时,VBA返回“types不匹配”

我有一个macros应该返回列E中的值,如果它匹配列A,列B和列D中的值。下面的公式inputExcel的工作很好:

=SUMPRODUCT(--(A1:A180="Category Name"),--(B1:B180="Specific Type"),--(D1:D180=2015),(E1:E180))

但是下面的VBA程序返回一个“types不匹配的错误”。 该程序位于一个模块,而不是在特定的工作表下。 我已经validation了“表名称”范围也存在。 任何人都可以看到错误是什么?

为了logging,列a和b是文本,列d和e是数字。

 Function LocateFirstCell() Dim FirstCell Dim ColA Dim ColB Dim ColD Dim ColE Dim Name As String Dim BOD As String Dim Year As Integer Set ColA = Worksheets("Sheet Name").Range("A1:A180") Set ColB = Worksheets("Sheet Name").Range("B1:B180") Set ColD = Worksheets("Sheet Name").Range("D1:D180") Set ColE = Worksheets("Sheet Name").Range("E1:E180") Name = "Category Name" BOD = "Specific Type" Year = 2015 FirstCell = [SUMPRODUCT(--(ColA=Name),--(ColB=BOD),--(ColD=Year),(ColE))] '=SUMPRODUCT(--(A1:A180="Category Name"),--(B1:B180="Specific Type"),--(D1:D180=2015),(E1:E180)) MsgBox ("FirstCell is " & FirstCell) End Function 

您不能在评估中使用vbavariables; []ActiveSheet.Evaluate简写

你必须把它写出来,并把这些variables连接成一个string:

 FirstCell = Worksheets("Sheet Name").Evaluate("SUMPRODUCT(--(" & ColA.Address & "=""" & Name & """),--(" & ColB.Address & "=""" & BOD & """),--(" & ColD.Address & "=" & Year & "),(" & ColE.Address & "))")