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

使用.End(xlRight)复制数据触发运行时错误,换xlUp正常,求原因

代码运行错误原因解析

xlRight触发报错的原因

你的代码中,Existing是在C列定位到的匹配单元格(例如C2)。执行.End(xlRight)时:

  • 若该单元格右侧所有单元格均为空,End(xlRight)会直接跳至当前行的最后一列(Excel最大列为XFD列)。
  • 后续.Offset(0,1)试图访问超出Excel列范围的位置,直接触发运行时错误(通常是1004类的范围越界错误)。

xlUp能正常运行的原因

换成.End(xlUp)时:

  • 即便Existing所在行上方全为空,.End(xlUp)最多定位到当前列的第1行(例如C1)。
  • 后续.Offset(0,1)指向的D1属于Excel有效单元格范围,因此宏能执行完成,只是复制位置不符合需求。

修复方案(实现目标需求)

如果要在首次出现数据的右侧第一个空单元格复制标识符,可替换复制环节的代码:

' 找该行最右侧的非空单元格,再往右偏移1格
OwnerName.Offset(0, -5).Copy Destination:=Worksheets(OwnerName.Value).Cells(Existing.Row, Columns.Count).End(xlToLeft).Offset(0, 1)

或者更稳妥的逐格查找方式:

Dim targetCell As Range
Set targetCell = Existing.Offset(0, 1)
' 循环找到第一个空单元格
Do While targetCell.Value <> ""
    Set targetCell = targetCell.Offset(0, 1)
Loop
OwnerName.Offset(0, -5).Copy Destination:=targetCell

内容的提问来源于stack exchange,提问作者user27758886

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:16:05