带有相对单元格引用的Excel VBA for循环公式

时间:2015-01-22 20:06:06

标签: excel excel-vba vba

我试图从单元格" B2"开始,放入一个公式,将单元格放在" B2"的左边,这是" A2" ,乘以另一张纸上的数字..

我的问题是......我如何引用左边的单元格?而且,我如何参考另一张纸上的单元格?我很确定这将是相同的答案,但我无法弄明白......

Sub RelFormula()

For Col = 1 To 2
    For Row = 2 To 6
        Cells(Row, Col).Formula = "=" & Cells.Offset(0, -1).Value & "*" worksheets("output").range("A1")
    Next Row
Next Col

End Sub

1 个答案:

答案 0 :(得分:2)

您不需要offset,只能从Cells的列参数中选择-1。您还错过了公式中使用的Cells的行和列参数,最终&,正如评论所指出的那样。

此外,使用关键字或保留字作为变量是一个非常糟糕的主意。有些名称受到保护,如果某些单词被用作变量名,VBA将无法编译/运行 - 但对于像" Row"这样的东西,它们在VBA的其他地方使用...它要求麻烦(即不推荐/不良做法等),并且会混淆读/调等等。

另外,请考虑在任何代码模块的顶部使用Option Explicit(如果您还没有)。如果您没有定义所有变量,这将使VBA抱怨/停止。这对初学者来说可能是令人沮丧的 - 但从长远来看这是值得的。

我已经重写了你的代码,表面上,重命名和定义变量。从技术上讲,您不需要双(外部)循环(c_loop只需要一个值):

Sub RelFormula()

Dim r_loop, c_loop As Integer

For c_loop = 2 To 2

    For r_loop = 2 To 6

        Cells(r_loop, c_loop).Formula = "=" & Cells(r_loop, c_loop - 1).Value _
        & "*" & Worksheets("Sheet1").Range("A1").Value

    Next r_loop

Next c_loop

End Sub