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

跨工作表引用单元格区域触发Runtime Error 1004问题排查

问题原因与解决方案

核心问题:未限定Cells的父对象

当你使用Range(Cells(1, 1), Cells(1, 3))时,Cells方法若未指定所属工作表,默认会指向当前激活的工作表。当Sheet1处于激活状态时,Cells(1,1)和Cells(1,3)实际是Sheet1的单元格,而你试图用Sheet2的Range对象引用Sheet1的单元格,这就触发了1004错误——VBA不允许跨工作表构建Range对象。

而用字符串地址Range("A1:C1")时,地址直接绑定到前面指定的Sheet2,因此不会出现问题。

修复代码

给Cells明确指定父工作表,确保和Range的父对象一致:

ThisWorkbook.Worksheets("Sheet2").Range( _
    ThisWorkbook.Worksheets("Sheet2").Cells(1, 1), _
    ThisWorkbook.Worksheets("Sheet2").Cells(1, 3) _
).Copy

为简化代码、提升可读性,可先将工作表对象赋值给变量:

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet2")
ws.Range(ws.Cells(1, 1), ws.Cells(1, 3)).Copy

关于Worksheets对象属性报错的补充

如果Worksheets对象的属性(比如Value字段)也触发1004错误,大概率也是未明确限定父对象导致的。比如直接使用未绑定到指定工作簿的Worksheets引用,或误将ThisWorkbook替换为ActiveWorkbook(当其他工作簿激活时会出错)。确保所有工作表、单元格对象都明确绑定到目标工作簿和工作表即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:55:29