制作动态VBA自动填充范围

时间:2018-03-16 13:23:18

标签: excel vba

目前,我有一些VBA代码可以自动填充列AE:AH中的公式,只要有更多数据发布到工作表中。我正在尝试将来证明它并使我的范围更加动态,以防我们添加更多的公式。这是当前的代码。

Sheets(twtsumsheet).Select
usedRows1 = Worksheets(twtsumsheet).Cells(Worksheets(twtsumsheet).Rows.Count, "A").End(xlUp).Row
Range("AE2:AH2").Select
Selection.AutoFill Destination:=Worksheets(twtsumsheet).Range(Cells(2, 31), Cells(usedRows1, 34)), Type:=xlFillDefault

因此,例如,目前公式在AE:AH列中。我们假设我们要再添加一个来计算数据,所以现在我们在AE:AI列中有公式。由于这个"范围(" AE2:AH2"),我的宏将继续自动填充AE:AH中的公式。选择"这个"细胞(2,31),细胞(usedRows1,34)"

我是VBA编码的新手,所以我没有得到任何好的想法。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

我的 OCD 迫使我去清洁"这段代码有点......

按照@Scott Craner的建议,查找包含数据的最后一栏。

注意:您应该远离使用Select

With Sheets(twtsumsheet)
    usedRows1 = .Cells(.Rows.Count, "A").End(xlUp).Row
    usedCols1 = .Cells(2, .Columns.Count).End(xlToLeft).Column ' get the last column

    With .Range(.Cells(2, 31),.Cells(2, usedCols1))
        .AutoFill Destination:=.Range(.Cells(2, 31), .Cells(usedRows1, usedCols1)), Type:=xlFillDefault
    End With
End With

答案 1 :(得分:2)

老实说,我不明白为什么这么多人使用.AutoFill当.FillDown或FillRight更合适。

with Sheets(twtsumsheet)
    usedRows1 = .Cells(.Rows.Count, "A").End(xlUp).Row
    usedCols1 = .Cells(2, .columns.count).End(xltoleft).column
    .Range(.Cells(2, 31), .Cells(usedRows1, usedCols1)).filldown
end with