范围自动填充下一行,最好仅使用变量

时间:2020-01-21 07:22:03

标签: excel vba

我只想选择从B到Z的最后一行(这是其中唯一包含公式的行。) 该范围应仅自动向下填充一行,并仅使倒数第二个值(意味着删除公式)。因此,最后一行应始终包含公式。

看起来像这样的数据集:

    A B C ..... Z
1   1 2 2 ......26
2   1 2 2 ......26
3   1 2 2 ......26
4   1 2 2 ......26
5   1 2 2 ......26

因此代码应从B5:Z5中选择并自动填充一行。

我尝试了以下代码,它给了我运行时错误。

Sub autofilllastrow()

Dim Lastrow As Integer
Dim Lastrange As Range


Lastrow = ActiveWorkbook.Worksheets("sheet1").Cells(Rows.Count, 2).End(xlUp).Row

Range("B" & Lastrow, "Z" & Lastrow).Select

Lastrange.AutoFill Destination:=Range("B" & Lastrow + 1, "Z" & Lastrow + 1)


End Sub

如何正确定义“目标”部分并仅使倒数第二行的值正确?

1 个答案:

答案 0 :(得分:1)

Sub autofilllastrow()

Dim lr As Long

With ThisWorkbook.Worksheets("Sheet1")
    lr = .Cells(.Rows.Count, 2).End(xlUp).Row
    .Range(.Cells(lr + 1, 2), .Cells(lr + 1, 26)).FillDown
    .Range(.Cells(lr, 2), .Cells(lr, 26)).Value = .Range(.Cells(lr, 2), .Cells(lr, 26)).Value
End With

End Sub
  • 不使用.Select
  • 使用Long数据类型代替Integer
  • FillDown而非AutoFill

或者如果您想设置Range变量,

Sub autofilllastrow()

Dim lr As Long, rng As Range

With ThisWorkbook.Worksheets("Sheet1")
    lr = .Cells(.Rows.Count, 2).End(xlUp).Row
    Set rng = .Range(.Cells(lr, 2), .Cells(lr, 26))
    rng.Offset(1).FillDown
    rng.Value = rng.Value
End With

End Sub