为什么在 VBA 中 运行 以下公式时出现 "Type Mismatch" 错误?
Why am I getting a "Type Mismatch" error when running the following formula in VBA?
ROUND(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.5)/1000,0)"
您的类型不匹配,因为 range.formula
需要 String value
而您正在组合 Range with String
,这会导致错误。要解决它,rediming 你的变量从 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.5)/1000,0)"
错误解释:
你的线路
Range("T7").Formula = "=Round(SumIfs(" & A & "," & B & ",0.5)/1000,0)"
相当于
Range("T7").Formula = "=Round(SumIfs(" & A.Value & "," & B.Value & ",0.5)/1000,0)"
因为 .Value
是 VBA 中 Range
对象的默认值 属性。
由于 A
和 B
都是多连续单元格范围,因此 .Value
returns 这些范围的所有值的二维数组。因此,您试图将 String
连接到二维数组,导致类型不匹配。
ROUND(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.5)/1000,0)"
您的类型不匹配,因为 range.formula
需要 String value
而您正在组合 Range with String
,这会导致错误。要解决它,rediming 你的变量从 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.5)/1000,0)"
错误解释:
你的线路
Range("T7").Formula = "=Round(SumIfs(" & A & "," & B & ",0.5)/1000,0)"
相当于
Range("T7").Formula = "=Round(SumIfs(" & A.Value & "," & B.Value & ",0.5)/1000,0)"
因为 .Value
是 VBA 中 Range
对象的默认值 属性。
由于 A
和 B
都是多连续单元格范围,因此 .Value
returns 这些范围的所有值的二维数组。因此,您试图将 String
连接到二维数组,导致类型不匹配。