Excel错误:1004 - 尝试编写单元格公式

时间:2014-04-22 19:53:17

标签: excel vba excel-vba

我会尽量缩短时间。 我需要根据他们所处的工作表重写一些单元格的公式。

Dim sFrmla As String
Dim rSomerange As Range

Let sFrmla = "=OFFSET(INDIRECT(INDIRECT(" & Chr(34) & "E" & Chr(34) & "&ROW()));0;"

Let rSomerange.Formula = sFrmla & wsSheet.Name & "_ZERO_SCALE)"
Let rSomerange.Formula = sFrmla & wsSheet.Name & "_FULL_SCALE)"
Let rSomerange.Formula = sFrmla & wsSheet.Name & "_PRCSUNIT)"

这在第二行(Zero_scale)崩溃,并给我一个运行时错误1004.我已经确定范围本身存在且可写。

有趣的是,相同的代码,但没有公式字符串可以正常工作。

Let rSomerange.Formula = wsSheet.Name & "_ZERO_SCALE)"

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  1. 无需使用Let关键字。在这种情况下,它很奇怪。
  2. 无论您所在地区的默认分隔符是什么 设置(逗号,或分号;),您应该始终使用逗号 , Range.Formula ;。如果您想使用您的区域 分隔符(在您的情况下为分号Range.FormulaLocal),使用sFrmla = "=OFFSET(INDIRECT(INDIRECT(" & Chr(34) & "E" & Chr(34) & "&ROW())),0," rSomerange.Formula = sFrmla & wsSheet.Name & "_ZERO_SCALE)" 代替。
  3. 所以,你应该使用:

    sFrmla = "=OFFSET(INDIRECT(INDIRECT(" & Chr(34) & "E" & Chr(34) & "&ROW()));0;"
    rSomerange.FormulaLocal = sFrmla & wsSheet.Name & "_ZERO_SCALE)"
    

    sFrmla = "=OFFSET(INDIRECT(INDIRECT(""E""&ROW())),0,"
    

    或更短的版本:

    {{1}}