我正在尝试从单元格"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
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