You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:07:00