Excel 2010 VBA公式与variables搞乱

我有这个代码:

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,"""")" 

variablesLastLine不是键入的,而是在整个代码中改变它的types。 首先,它是一个数字(行号),然后给它分配文本,字母C与行号相结合,例如“C3”。 接下来在R1C1引用中使用它,其中C3表示第3列,所以第一个LastLine赋值中的行号将以公式中的列结尾。

如果你的variables变暗到特定的types,你的代码会更干净,而且你不会把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