我有这段代码:
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 & ","""")"
对于公式而言,一切都是可行的,结果就是
&#34; = IF($ E $ 12 - $ Z:$ Z&lt;&gt; 0,$ E $ 12 - $ Z:$ Z,&#34;&#34;)&#34;
谁能看到我做错了什么?当我尝试
时LastLine = Range(LastLine).address
它给了我一个错误
答案 0 :(得分:2)
未键入变量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
答案 1 :(得分:1)
由于您使用的是R1C1表示法,因此您必须将CsomeRow
翻译为RsomeRowC3
Range("E13").FormulaR1C1 = "=if(R12C5 - R" & LastLine & "C3 <> 0,R12C5 - R" & LastLine & "C3,"""")"