在VBA中添加公式时,应用程序已定义 – 或对象定义错误

我试图在VBA中添加一个包含variables的公式,但是它一直抛出以下错误:

应用程序已定义 – 或对象定义错误

这是下面的代码, expectedProjectWSbudgetLines是工作表。 它基本上试图参考budgetLines工作表。

Dim Findo3 As Range For Each a In refData.Range("G7:G" & LastRow_RefData).Cells Set Findo3 = budgetLines.Range("B8" & ":" & "B" & lastRow3).Find(a.Value, LookIn:=xlValues, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _ MatchCase:=False, SearchFormat:=False) expectedProjectWS.Range("A" & lastAddress).Offset(1, 10).Formula = "=VLOOKUP(" _ & budgetLines.Range(Findo3.Address).Offset(0, -1).Value _ & ",BudgetLines!" & budgetLines.Range(Findo3.Address).Offset(0, -1).Address & ":$M$19,12,FALSE)" Next 

但是,当我debuggingbudgetLines.Range(Findo3.Address).Offset(0, -1).Address它返回其值。

您的代码似乎是多行的,但不包含换行符。 尝试这个:

 expectedProjectWS.Range("A" & lastAddress).Offset(1, 10).Formula = "=VLOOKUP(" _ & budgetLines.Range(Findo3.Address).Offset(0, -1).Value _ & ",BudgetLines!" & budgetLines.Range(Findo3.Address).Offset(0, -1).Address _ & ":$M$19,12,FALSE)" 

如果仍然出现相同的错误,请确保Range(...).Offset调用都没有返回无效范围。

例如,下面的代码尝试访问无效范围的地址,并返回“应用程序定义的或对象定义的错误”错误,因为在单元格“A1”的左上方没有单元格: Range("A1").Offset(-1, -1).Address