首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当公式正常工作时,VBA返回"type-mismatch“

当公式正常工作时,VBA返回"type-mismatch“
EN

Stack Overflow用户
提问于 2016-07-15 00:11:03
回答 1查看 388关注 0票数 2

我有一个宏,如果E列中的值与A列、B列和D列中的值匹配,它将返回E列中的值。下面的公式输入到Excel中,效果很好:

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

但是下面的VBA程序返回一个“类型不匹配错误”。该程序位于一个模块中,而不是位于特定的工作表下。我已经验证了“工作表名称”范围也存在。有没有人能看出来错误是什么?

对于记录,列a和b是文本,列d和e是数字。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-15 00:19:58

不能在Evaluate的缩写中使用vba变量;[]ActiveSheet.Evaluate的缩写

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

代码语言:javascript
复制
FirstCell = Worksheets("Sheet Name").Evaluate("SUMPRODUCT(--(" & ColA.Address & "=""" & Name & """),--(" & ColB.Address & "=""" & BOD & """),--(" & ColD.Address & "=" & Year & "),(" & ColE.Address & "))")
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38379184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档