希望这将是一个快速解决方案。
我已经用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中的最后一个单元格吗?
答案 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))