VBA宏报错求助:复制数据到另一工作表指定区域时遇对象定义错误
解决VBA中rng2区域设置的报错问题
我一眼就发现了代码里导致“application-defined or object-defined error”的几个关键问题,咱们一步步来修正:
核心错误点
- 拼写错误导致常量无效:你写的
End(x1Up)里的x1Up是错的!这里应该是VBA内置常量xlUp(注意是字母l,不是数字1),拼写错误会让VBA无法识别这个定位指令,直接触发报错。 - 命名参数语法错误:
Copy Destination = ...应该写成Copy Destination:=...,VBA里调用方法的命名参数必须用:=来赋值,直接用=会导致语法错误。 - 目标单元格定位偏差:
Offset(0)会让你把数据粘贴到最后一行有数据的单元格上,覆盖原有内容,应该用Offset(1)定位到下一个空白行的对应列。
修正后的完整代码
Sub Assign_TN() ' Assign_TN Macro Dim ws As Worksheet Dim wbk2 As Workbook Dim ws2 As Worksheet Dim Rng As Range Dim rng2 As Range Set ws = ThisWorkbook.Worksheets("Check sheet") Set wbk2 = Workbooks.Open("A Location\TNG Register ongoing.xlsx") Set ws2 = wbk2.Worksheets("TNG") 'This clears the TN has failed comment in the event the cannot generate Tn macro has been run ws.Range("A83").ClearContents ' Copy the first set of data from the checksheet and paste into the first blank row of the TNG register Set Rng = ws.Range("B93:M93") Rng.Copy Destination:=ws2.Cells(Rows.Count, 2).End(xlUp).Offset(1) 'copy second set of data from checksheet and paste into first blank cell in column 22 Set rng2 = ws.Range("Q93:AM93") ' 修正了拼写、语法和偏移量问题 rng2.Copy Destination:=ws2.Cells(Rows.Count, 22).End(xlUp).Offset(1) ' 建议加上保存和关闭工作簿的代码(如果需要) ' wbk2.Save ' wbk2.Close End Sub
额外说明
修正后,第一组数据会粘贴到目标表第2列(B列)的下一个空白行,第二组数据会粘贴到第22列(V列)的下一个空白行,完全符合你“复制到另一工作表第一未填充行的不同区域”的需求。如果后续还有其他问题,比如数据格式保留之类的,可以再调整Copy方法的参数~
内容的提问来源于stack exchange,提问作者RobertW081171
相关产品推荐
相关产品推荐

