Excel 创建动态VBA自动填充范围

Excel 创建动态VBA自动填充范围,excel,vba,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

目前,我有一些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编码的新手,所以没有什么好主意。非常感谢您的帮助。

我的强迫症迫使我稍微“清理”一下这段代码

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

注意:应避免使用
选择

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

我的强迫症迫使我稍微“清理”一下这个代码

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

注意:应避免使用
选择

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

我真的不明白为什么这么多人使用.AutoFill when。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

我真的不明白为什么这么多人使用.AutoFill when。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

您已经使用方法查找最后一行,为什么不利用该方法查找最后一列,提示
xltoLeft
?^^^您已经使用方法查找最后一行,为什么不利用该方法查找最后一列,提示
xltoLeft
?^@ScottCraner yep,这段代码结合使用Jeeped的.filldown正是我所需要的。其他人为usedRows变量编写了代码,我想我直到现在才完全理解它。我非常感激@ScottCraner是的,没错:)这段代码与使用Jeeped.filldown相结合正是我所需要的。其他人为usedRows变量编写了代码,我想我直到现在才完全理解它。我非常感激!非常有用。非常感谢。非常有用。非常感谢。