Pri*_*Bee 4 excel vba autofill excel-vba
我想在P中创建一个名为的列Age of Ticket.它正在计算两个日期,然后自动填充.此宏将用于更改行数的报表.当我使用它时,它基本上在P2上进行计算,然后它在P1上进行计算(标签所在的位置)并且不进行自动填充.
Dim LastRow As Long
LastRow = Range("P65000").End(xlUp).Row
Range("P1").Select
ActiveCell.FormulaR1C1 = "Age of Ticket"
Range("P2").Select
ActiveCell.FormulaR1C1 = "=RC[-5]-RC[-8]"
Range("P2").Select
Selection.AutoFill Destination:=Range("P2:P" & LastRow)
Range("P2:P3000").Select
ActiveWindow.SmallScroll Down:=210
Run Code Online (Sandbox Code Playgroud)
[结果]
问题是添加的列是空的.所以你的代码告诉excel去P65000和模仿命中ctrl- upArrow.这将找到具有值的第一个单元格,但由于没有值,它在顶部单元格P1处停止,因此LastRow = 1.因此填充区域为P2:P1.使用包含数据的列.我使用K列,因为它在你的公式中.
这是使用Record宏并尝试清理的一个很好的例子.清理代码时,一个重点应该是摆脱.Select.请参阅此处,以获得很好的方法汇编,以便在没有参考范围的情.Select
此外,当使用.FormulaR1C1整个范围时,可以立即设置,不需要填充.
将上面的代码更改为:
Dim LastRow As Long
LastRow = Range("K65000").End(xlUp).Row
Range("P1").value = "Age of Ticket"
Range("P2:P" & LastRow).FormulaR1C1 = "=RC[-5]-RC[-8]"
Run Code Online (Sandbox Code Playgroud)
此外,如果您想使用自动填充,则无需使用r1c1公式.
Range("P2").Formula = "=K2-H2"
Range("P2").AutoFill Destination:=Range("P2:P" & LastRow)
Run Code Online (Sandbox Code Playgroud)
这将自动更改相对引用以保持行正确.