【问题标题】:Excel VBA - Runtime error '1004'Excel VBA - 运行时错误“1004”
【发布时间】:2013-06-10 10:46:33
【问题描述】:

我有一些 VBA 代码,我想使用 R1C1 将公式复制到一系列单元格中。不幸的是,我在倒数第二行收到以下错误:
Runtime error '1004': Application-defined or object-defined error.

Dim pct As Single
pct = 1

With ThisWorkbook.Sheets("Data").UsedRange
    Dim lastR As Long
    lastR = .Rows.Count 
    Dim lastC As String
    lastC = col_letter(.Columns.Count)
End With

With ThisWorkbook.Sheets("Calculations")
    .Range("A1:" & lastC & 1).Value = 100
==> .Range("A2:" & lastC & lastR + 1).FormulaR1C1 = "=R[-1]C*(1+" & pct / 100 & "*'Data'!R[-1]C"
End With

我在这里做错了什么?

【问题讨论】:

  • 发生错误时您的lastClastR 当前值是多少?
  • lastC = "CU"; lastR= 1000; pct= 0.1
  • 你知道VBA中使用&和+的区别吗?它可能是您文件数据和扩展名的路径

标签: excel vba runtime-error


【解决方案1】:

您可能在公式中缺少括号

"=R[-1]C*(1+" & pct / 100 & ")*'Data'!R[-1]C"

【讨论】:

  • 你说得对,我少了一个括号。但是运行时错误仍然发生在同一行...
  • 如果在公式"=R[-1]C*(1+" & pct & "/100)*'Data'!R[-1]C"进行计算会怎样
  • 如果您手动将公式输入到这些单元格中,是否会返回错误? (data!A1 是否包含数字?)
【解决方案2】:

我认为您正在运行非英文版的 Excel/Office。因此可能存在数字分隔标记的问题。需要在定义为字符串的函数中使用. (dot),然后通过formulaR1C1 property 传递给Excel。然后它将转换为, (comma),这是在将函数放入excel单元格时需要的。因此,这条线对我有用,没有错误:

....=Replace("=R[-1]C*(1+" & pct / 100 & ")*Data!R[-1]C", ",", ".")

还有一件事,我删除了 '' (single quotation marks) 的工作表名称。

【讨论】:

  • 感谢大家的帮助——我认为 KazJaw 的建议终于解决了问题。
  • 更新:我刚刚将操作系统的区域设置更改为“美国”。现在我可以毫无问题地使用任何功能,甚至不必使用replace
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多