Excel 2010 VBA 公式变量混乱

Excel 2010 VBA formula with variable messing up

我有这个代码:

LastLine = Range("C" & Rows.Count).End(xlUp).Row
LastLine = "C" & LastLine
Range(LastLine).Select
ActiveCell.FormulaR1C1 = "=SUM(R4C3:R[-1]C)"
Range("E13").FormulaR1C1 = "=if(R12C5 - " & LastLine & " <> 0,R12C5 - " & LastLine & ","""")"

一切正常,期望公式的结果是

"=IF($E$12 - $Z:$Z <> 0,$E$12 - $Z:$Z,"")"

谁能看出我做错了什么?还有当我尝试

LastLine = Range(LastLine).address

它给我一个错误

由于您使用的是 R1C1 表示法,因此您必须将 CsomeRow 转换为 RsomeRowC3

Range("E13").FormulaR1C1 = "=if(R12C5 - R" & LastLine & "C3 <> 0,R12C5 - R" & LastLine & "C3,"""")"

未键入变量 LastLine,您在整个代码中更改了它的类型。首先,它是一个数字(行号),然后为它分配文本,字母 C 与行号组合,例如 "C3"。接下来,您在 R1C1 引用中使用它,其中 C3 表示第 3 列,因此第一个 LastLine 分配的行号最终将作为公式中的列。

如果您的变量变暗为特定类型并且您不会将 A1 表示法与 R1C1 混用,您的代码会更清晰。

Sub test()
Dim LastLine As Long
Dim LastLineCell As String

LastLine = Range("C" & Rows.Count).End(xlUp).Row
LastLineCell = "C" & LastLine
Range(LastLineCell).Select
ActiveCell.FormulaR1C1 = "=SUM(R4C3:R[-1]C)"
Range("E13").FormulaR1C1 = "=if(R12C5 - R" & LastLine & "C26 <> 0,R12C5 - R" & LastLine & "C26,"""")"
End Sub