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

VBA R1C1风格编程触发Run-time error '1004'求助

问题排查与解决方案

错误核心原因

出现Run-time error '1004'主要有两个关键问题:

  • 公式参数分隔符不兼容:VBA中使用FormulaR1C1属性时,无论Excel界面语言是什么,公式内的参数分隔符必须用英文逗号,,而非代码里的分号;。分号仅适用于非英文Excel界面的手动输入场景,VBA解析公式时只识别逗号。
  • 固定行数的Resize范围错误:代码里用Resize(5,1)硬编码了5行结果区域,但实际销售员数量由nr变量计算得出,固定值会导致当实际数据行数与5不符时,要么公式写入范围不匹配,要么超出工作表可用区域触发错误。

修正后的代码

Sub Cookies()
    Dim nr As Integer, nc As Integer
    nc = WorksheetFunction.CountA(Rows("6:6")) - 1
    nr = WorksheetFunction.CountA(Columns("A:A")) - 2
    ' 替换分隔符为逗号,并用nr匹配实际数据行数
    Cells(5, nc + 2).Resize(nr, 1).FormulaR1C1 = "=SUMIF(R6C1:R16C1,RC[-1],R6C6:R16C6)"
End Sub

额外优化建议

  • 建议明确指定工作表对象,避免依赖默认激活工作表引发的潜在错误,例如将Cells(...)改为Sheet1.Cells(...)(替换为你的目标工作表名称)。
  • 若销售员数据行数不是固定到第16行,可将公式中的固定范围改为动态匹配:
    Dim dataLastRow As Integer
    dataLastRow = 5 + nr ' 假设第6行是数据起始行
    Cells(5, nc + 2).Resize(nr, 1).FormulaR1C1 = "=SUMIF(R6C1:R" & dataLastRow & "C1,RC[-1],R6C6:R" & dataLastRow & "C6)"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:34:52