运行时错误1004(使用循环将公式添加到单元格范围)

问题描述 投票:0回答:1

由于某种原因,下面的代码生成1004运行时错误。这是一个简单的循环,使用上面3行中的单元格和特定单元格中的“=”符号将值添加到一系列单元格中。

上面3行的单元格包含一个公式作为文本,如下所示:IF(OR($A5="",W5<=0),"",RANK(W5,$W$5:$W$9248,0))

我试着对'eq'值进行硬编码(这是'='符号)并且错误仍然存​​在,但如果你要使它成为另一个角色,它可以正常工作。我现在没有想法了。

提前致谢。

Sub insertFormula()

Application.ScreenUpdating = False

'Set variables
Dim c, rng As Range
Dim eq As String

Set rng = ActiveSheet.Range("S5:W5")
eq = ActiveSheet.Range("S1").Value 'This cell holds the = sign

'Loop through range and apply formula
For Each c In rng
    c.Value = eq & c.Offset(-3, 0).Value
Next c

Application.ScreenUpdating = True

End Sub
excel vba
1个回答
0
投票

另一种解决方案是使用RC表示法

Sub insertFormula()

    'Set variables
    Dim rng As Range

    Set rng = ActiveSheet.Range("S5:W5")
    rng.Formula = "=R[-3]C"

End Sub

在一行

 ActiveSheet.Range("S5:W5").Formula = "=R[-3]C"

更新基于OP的评论似乎需要类似的东西

For Each c In rng
    c.Formula = "=" & c.Offset(-3, 0).Value & ""
Next c

您可以组合字符串以将它们用作公式,但您需要将它们放在引号之间

更新2似乎单元格中有一些空格可能导致运行时错误1004.尝试先清理字符串

For Each c In rng
    c.Formula = "=" & WorksheetFunction.Clean(c.Offset(-3, 0).Value) & ""
    'c.Formula = "=" & c.Offset(-3, 0).Value & ""
Next c

更新3字符串可能还包含不间断的空格。你也可以删除它。

Dim s As String

For Each c In rng
    s = WorksheetFunction.Clean(c.Offset(-3, 0).Value)
    s = Replace(s, Chr(160), "")
    c.Formula = "=" & s
    'c.Formula = "=" & c.Offset(-3, 0).Value & ""
Next c
© www.soinside.com 2019 - 2024. All rights reserved.