首页 > 解决方案 > 范围自动填充一行,最好只使用变量

问题描述

我想只选择从 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

我应该如何正确定义目标部分并只制作倒数第二行的值?

标签: excelvba

解决方案


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

推荐阅读