当公式正常工作时,VBA返回"类型不匹配"

chi*_*ANz 2 arrays excel vba excel-vba type-mismatch

我有一个宏,它应该返回E列中的值,如果它匹配A列,B列和D列中的值.输入Excel的以下公式很有用:

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

但是以下VBA程序返回"类型不匹配错误".该程序作为一个模块而不是特定的表格下.我已经验证了"工作表名称"范围也存在.任何人都可以看到错误是什么?

对于记录,列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
Run Code Online (Sandbox Code Playgroud)

Sco*_*ner 6

您不能在Evaluate的简写中使用vba变量; 这[]是一个简短的手ActiveSheet.Evaluate

您必须将其写出并将变量连接成一个字符串:

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