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

亲爱的溢出社区

我想添加一个公式一些单元格(4,x),为每张(sh)。 我在main代码中的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 

非常感谢,完美的工作

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

此外,正如Shai Rado指出的那样,您使用一个数字作为列名。 在这种情况下,我会使用R1C1格式,所以你不必将数字转换成一个字母,即

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

这取得了列号而不是列号。 此外,我已经改变公式使用"而不是'并更正了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 

只要尝试这个来克服你的问题:直接把Formel没有使用关键字。公式

 Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long) Formel = "=TEXT(R1C" & a & ",""TTT"")" sh.Cells(4, a) = Formel End Sub