如何解决为什么在 VBA 中运行以下公式时会出现“类型不匹配”错误?
圆形(SUMIFS($L$3:$L$14,$K$3:$K$14,0.5)/1000,0)
Dim A As Range
Dim B As Range
Set A = Range("L" & FirstRow,"L" & LastRow2)
Set B = Range("K" & FirstRow,"K" & LastRow2)
Range("T7").Formula = "=Round(SumIfs(" & A & "," & B & ",0)"
解决方法
您遇到类型不匹配,因为 range.formula
期待 String value
而您正在组合 Range with String
,这会导致错误。为了解决这个问题,redim从 Range to String
中修改你的变量就可以了,例如:
Dim lastrow As Long,firstrow As Long
Dim A As String
Dim B As String
firstrow = 1
lastrow = 20
A = "L" & CStr(firstrow) & ":L" & CStr(lastrow)
B = "K" & CStr(firstrow) & ":K" & CStr(lastrow)
Range("B7").Formula = "=Round(SumIfs(" & A & "," & B & ",0.5)/1000,0)"
,
试试:
Range("T7").Formula = "=Round(SumIfs(" & A.Address & "," & B.Address & ",0)"
错误说明:
你的线路
Range("T7").Formula = "=Round(SumIfs(" & A & ",0)"
相当于
Range("T7").Formula = "=Round(SumIfs(" & A.Value & "," & B.Value & ",0)"
因为 .Value
是 VBA 中 Range
对象的默认属性。
由于 A
和 B
都是多连续单元格范围,.Value
返回这些范围的所有值的二维数组。因此,您试图将 String
连接到二维数组,导致类型不匹配。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。