我用记录器创建了这个小宏...现在,我只需要它可以处理可变数量的行(而不是我的20000作弊行)。
是否有提示或技巧可以告诉此代码在最后一行停止?
Columns("K:K").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("K1").Select
ActiveCell.FormulaR1C1 = "Total"
Range("K2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-2]-RC[-3]-RC[-1],""h:mm"")"
Range("K2").Select
Selection.AutoFill Destination:=Range("K2:K20000")
Range("K2:K20000").Select
谢谢
答案 0 :(得分:1)
您可以尝试这样的事情。
Sub LastRow()
Dim sht As Worksheet
Dim LastRow As Long
Set sht = ActiveSheet
LastRow = sht.Cells(sht.Rows.Count, "K").End(xlUp).Row
End Sub
答案 1 :(得分:0)
由于您要填写K列,因此我假设该列在单元格K2下为空。另一列可能有数据,您想填充到该另一列的最后一行数据。
为此,您可以确定另一列的最后一行,在我的示例中为A列,但是您可以更改它。然后将变量lastRow
插入您的自动填充语句。
Dim sht As Worksheet
Dim lastRow As Long
Set sht = ActiveSheet
lastRow = sht.Cells(Rows.Count, "A").End(xlUp).Row
sht.Range("K1").FormulaR1C1 = "Total"
sht.Range("K2").FormulaR1C1 = "=TEXT(RC[-2]-RC[-3]-RC[-1],""h:mm"")"
sht.Range("K2").AutoFill Destination:=sht.Range("K2:K" & lastRow)
答案 2 :(得分:-1)
假设您在A列中有最后一行:
Columns("K:K").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("K1").Select
ActiveCell.FormulaR1C1 = "Total"
Range("K2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-2]-RC[-3]-RC[-1],""h:mm"")"
Range("K2").Select
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
Selection.AutoFill Destination:=Range("K2:K" & LastRow)
Range("K2:K" & LastRow).Select