使用VBA将公式添加到单元格范围

时间:2016-11-24 10:12:13

标签: excel vba excel-vba formula

亲爱的溢出社区

我想为每张纸(sh)添加一些公式,一些单元格(4,x)。我正在主代码中的for循环中运行sub,它通过每个列运行(a)。我尝试过很多东西但不幸的是我的代码不会运行:

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long)

Formel = "=TEXT(" & a & "$1;'TTT')"
sh.Cells(4, a).Formula = Formel

End Sub

编辑:

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long)

Formel = "=TEXT(R1C" & a & ",""TTT"")"
sh.Cells(4, a).FormulaR1C1 = Formel

End Sub

非常感谢,完美地工作

3 个答案:

答案 0 :(得分:1)

在VBA中,无论您的本地设置如何,都需要使用逗号分隔公式中的函数参数。 (您可以使用.FormulaLocal绕过它,但我不推荐它,因为它可能无法在其他计算机上运行)

此外,正如Shai Rado所说,您使用数字作为列名。在这种情况下,我会使用R1C1格式,因此您不必将数字转换为字母,即

Formel = "=TEXT(R1C" & a & ",""TTT"")"
sh.Cells(4, a).FormulaR1C1 = Formel

答案 1 :(得分:1)

这将使用列字母而不是列号。我还改变了使用"代替'的公式,并更正了TEXT公式,因为这两个公式是公式失败的部分原因

Sub InsertFormula(ByVal sh As Worksheet, ByVal Col As String)
    Dim Formel As String

    Formel = "=TEXT(" & Col & "$1,""TTT"")"
    sh.Range(Col & "4").Formula = Formel

End Sub
Sub test()
    Call InsertFormula(ActiveSheet, "A")
End Sub

答案 2 :(得分:0)

试试这个来克服你的问题:直接使用Formel而不使用关键字.formula

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long)

Formel = "=TEXT(R1C" & a & ",""TTT"")"
sh.Cells(4, a) = Formel

End Sub