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

时间:2017-09-06 15:24:19

标签: excel vba excel-vba

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

我已经用Google搜索了,所有的VBA代码都是将列自动填充到最后一个单元格。但是,我正试图自动填充一行。

我目前的代码段如下。我想要做的是将标题放在顶部,其中包含日期,并创建一个只包含月份和年份的新标题。这是为了运行宏的其余部分。但是,现在,用户必须在顶部手动执行公式自动填充。

我的代码是:

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中的最后一个单元格吗?

2 个答案:

答案 0 :(得分:2)

可能的解决方案。

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

答案 1 :(得分:2)

首先避免使1e-8减慢代码速度,然后您就可以填写公式而无需自动填充。

还养成了声明所有范围的父工作表的习惯。

我们找到最后一个使用.Select的列。

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

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

.Range("D1",.Cells(1,.Cells(2,.Columns.Count).End(xltoLeft).Column))