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

Excel VBA跨表复制转置粘贴触发运行时错误1004问题求解

错误原因分析
  • 根本原因是VBA中Range.Select方法只能对当前处于激活状态的工作表中的单元格生效,如果执行代码时Questions工作表或Apps工作表未被激活,对应行的Select操作就会抛出1004错误。
  • 额外说明:原代码使用Select/Selection的写法属于录制宏产生的冗余风格,既降低执行效率,也极易因为工作表激活状态变化触发异常,实际开发中完全可以省略这类操作。
修正后的可用代码

无需选中任何单元格或工作表,直接完成转置粘贴即可,代码更简洁也不会触发激活状态相关的错误:

Sub CopyPaste()
    Worksheets("Questions").Range("D3:D40").Copy
    Worksheets("Apps").Range("C2").PasteSpecial Paste:=xlPasteValues, Transpose:=True
    Application.CutCopyMode = False
End Sub

补充验证:D3:D40共38个单元格,C2:AN2也是38个连续列,范围完全匹配,不会出现内容溢出问题。

如果你一定要保留原代码的选中操作逻辑,需要先激活对应工作表(不推荐该写法),示例如下:

Sub CopyPaste_NotRecommend()
    Worksheets("Questions").Activate
    Worksheets("Questions").Range("D3:D40").Select
    Selection.Copy
    Worksheets("Apps").Activate
    Worksheets("Apps").Range("C2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True
    Worksheets("Apps").Range("A1").Select
    Application.CutCopyMode = False
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:36:04