excelmacros应用程序定义或对象定义的错误

我正在使用下面的代码,并得到错误。 该代码用于获取一组单个项目,并将它们和它们各自的对应值组合在一起。

application-defined or object-defined error当代码到达:.Range(“B15:B”&LastRow).Formula =“= SUMIF(”&myrng1.Address&“,RC [-1] myrng2.Address&“)”

错误是与代码RC[-1]的中间部分如果有人可以请告诉我什么我会用这个地方,这将是很大的帮助`

代码是

 Sub InventorySummerise() Dim LastRow As Long LastRow = Cells(Rows.Count, "B").End(xlUp).Row Set myrng1 = Range("B2:B" & LastRow) Set myrng2 = Range("D2:D" & LastRow) Cells(LastRow + 5, 2).Select With ThisWorkbook.Sheets("Sheet1") .Range("B15:B" & LastRow).Formula = "=SUMIF(" & myrng1.Address & ",RC[-1]," & myrng2.Address & ")" End With End Sub 

任何有关错误的帮助都将是惊人的,即使我们也不知所措

谢谢!

两种方法来完成这个工作:

一:

 '~~> change RC[-1] reference to A1 notation '~~> so if you are putting formula in B15, RC[-1] is A15 With ThisWorkbook.Sheets("Sheet1") .Range("B15:B" & LastRow).Formula = "=SUMIF(" & myrng1.Address & ",A15," & myrng2.Address & ")" End With 

二:

 '~~> As what Patrick said, use FormulaR1C1 '~~> Then change R1C1 address reference style for your ranges With ThisWorkbook.Sheets("Sheet1") .Range("B15:B" & LastRow).FormulaR1C1 = "=SUMIF(" & myrng1.Address(ReferenceStyle:=xlR1C1) & ",RC[-1]," & myrng2.Address(ReferenceStyle:=xlR1C1) & ")" End With 

希望这可以帮助。

您正试图使用​​R1C1公式来正常的公式。

应该使用.Range("B15:B" & LastRow).FormulaR1C1 = "..."

尝试这个:

 Sub InventorySummerise() On Error Resume Next Dim LastRow As Long, myrng1 As Range, myrng2 As Range LastRow = Cells(Rows.Count, "B").End(xlUp).Row Set myrng1 = Range("B3:" & Cells(LastRow, 2).Address(rowabsolute:=False, columnabsolute:=False)) Set myrng2 = Range("D3:" & Cells(LastRow, 4).Address(rowabsolute:=False, columnabsolute:=False)) With ThisWorkbook .Names("Range1").Delete .Names("Range2").Delete .Names.Add "Range1", myrng1 .Names.Add "Range2", myrng2 .Sheets("Sheet1").Range("B15:B" & LastRow + 5).Formula = "=SUMIF(Range1,RC[-1],Range2)" End With End Sub 

希望它已经为您解决了。 如果情况并非如此,错误来自.range不承认。 如果激活工作簿不打扰您,您可以尝试以下操作:

 Sub InventorySummerise() Dim wtb As Workbook Dim LastRow As Long Set wtb = ThisWorkbook LastRow = Cells(Rows.Count, "B").End(xlUp).Row Set myrng1 = Range("B3:" & Cells(LastRow, 2).Address(rowabsolute:=False, columnabsolute:=False)) Set myrng2 = Range("D3:" & Cells(LastRow, 4).Address(rowabsolute:=False, columnabsolute:=False)) Cells(LastRow + 5, 2).Select wtb.Activate With Sheets("Sheet1") .Range("B15:B" & LastRow).Formula = "=SUMIF(" & myrng1.Address & ",1," & myrng2.Address & ")" End With End Sub