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

使用.Cells()跨工作表复制时出现VBA运行时错误1004求助

VBA代码1004错误解决:Method 'Range' of object '_Worksheet' failed

问题重现

运行代码最后一行时触发1004错误:Method 'Range' of object '_Worksheet' failed,但被注释的上一行代码可正常执行,调试时LC值为6。

错误原因

最后一行代码里的Cells(3,8)没有明确指定所属工作表,VBA会默认使用当前活动工作表,而不是你定义的TD工作表。当Range方法(属于TD)引用了不属于它的Cells对象时,就会触发引用错误。

对比注释行的TD.Range("F3"),这里用的是字符串地址,VBA能明确识别是TD工作表的范围,所以不会出错。

修复代码

把出错的最后一行:

HTD.Range(HTD.Cells(2, 1), HTD.Cells(LR, 1)).Copy Destination:=TD.Range(Cells(3, 8))

修改为:

HTD.Range(HTD.Cells(2, 1), HTD.Cells(LR, 1)).Copy Destination:=TD.Range(TD.Cells(3, 8))

或者更简洁的写法:

HTD.Range(HTD.Cells(2,1), HTD.Cells(LR,1)).Copy TD.Cells(3,8)

额外优化建议

原代码大量使用Select和Selection,不仅容易引发类似的工作表引用错误,还会降低代码执行效率,建议替换为直接操作对象:

比如原代码中:

.Range("A1:A2").Select
Selection.Merge
ActiveCell.Value = "Candidate Group"
Selection.Font.Bold = True
Selection.HorizontalAlignment = xlCenter
Selection.VerticalAlignment = xlCenter

可以改为:

With .Range("A1:A2")
    .Merge
    .Value = "Candidate Group"
    .Font.Bold = True
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
End With

同理,其他用到Select/Selection的地方都可以用类似的With块优化,避免依赖活动单元格/工作表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:39:40