自动填充行中的最后一个单元(水平自动填充而不是垂直)

希望这将是一个快速解决。

我已经search了所有的VBA代码是自动填充列到最后一个单元格。 不过,我试图自动填充整行。

我目前的代码片段如下。 我想要做的是在顶部有标有date的标题,并创build一个只有月份和年份的新标题。 这是macros的其余部分运行。 但是,现在用户不得不手动在顶部自动填充公式。

我的代码是:

Rows("1:1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("D1").Select ActiveCell.FormulaR1C1 = "=TEXT(R[1]C,""mmm-yyyy"")" LastCol = Range("D1").End(xlToRight).Column Range("D1").Select Selection.AutoFill Destination:=Range("D1:AD1"), Type:=xlFillDefault Range("D1:AD1").Select 

在这一行是:

 Selection.AutoFill Destination:=Range("D1:AD1"), Type:=xlFillDefault 

无论如何,要让“AD1”成为新行2中的最后一个单元格吗?

可能的解决scheme。

 Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("D1").FormulaR1C1 = "=TEXT(R[1]C,""mmm-yyyy"")" lastcol = Cells(2, Columns.Count).End(xlToLeft).Column Range("D1").AutoFill Destination:=Range("D1", Cells(1, lastcol)), Type:=xlFillDefault 

首先避免。select减慢代码,然后可以填写公式,而不需要自动填充。

也习惯于声明所有范围的父级工作表。

我们用.Cells(2,.Columns.Count).End(xltoLeft).Column)find最后一个使用的列。

在另一个Cells()中使用它,我们得到第1行中的最后一个单元格.Cells(1,.Cells(2,.Columns.Count).End(xltoLeft).Column)

因此, .Range("D1",.Cells(1,.Cells(2,.Columns.Count).End(xltoLeft).Column))创build从D1到第2行中最后一个使用列的范围:

 With ActiveSheet 'Should be replaced with your sheet name: Worksheets("Sheet1") .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove .Range("D1",.Cells(1,.Cells(2,.Columns.Count).End(xltoLeft).Column)).FormulaR1C1 = "=TEXT(R[1]C,""mmm-yyyy"")" End With