范围类的vba自动填充方法失败

我想在列A中find一个月份的date,并将结果粘贴到列B.他们都有标题,列A是date和列B是月。 我想有简单的计算列A的月份的VBA代码。

这是我的代码到目前为止,

Sub Month() Dim ws As Worksheet Dim lastrow As Long Set ws = Worksheets("Sheet1") ws.Cells(2, "B") = "=Month(A2)" lastrow = Range("A" & Rows.Count).End(xlUp).Row Range("B2").AutoFill Destination:=Range("B2:B" & lastrow), Type:=xlFillDefault End Sub 

但我不断收到自动填充方法的范围类失败的错误,我试图改变自动填充types,但它不会工作。 如果你们知道一个更快的方法去做,也请告诉我。 (不是excel函数,plz)

在这里输入图像说明

谢谢,

如果lastrow值为2,则此代码将失败。您需要添加一些逻辑来解决此问题。 也修改为使用更好的方法find“最后一行”

 Sub month() Dim ws As Worksheet Dim lastrow As Long Dim startCell As Range Set ws = Worksheets("sheet1") With ws Set startCell = .Cells(2, 2) ' or .Range("B2") lastrow = startCell.EntireColumn.Find("*", AFter:=startCell, SearchDirection:=xlPrevious).Row If lastrow = startCell.Row Then lastrow = lastrow + 1 startCell.Formula = "=Month(A2)" startCell.AutoFill Range(startCell, startCell.Cells(lastrow)), xlFillDefault End With End Sub 

“目的地必须包括来源范围”。 请参阅链接 。 所以请select单元格。 如果要将公式应用于单元格使用.Formula = "=Month(A2)"

 Sub Month() Dim ws As Worksheet Set ws = Worksheets("Sheet1") ws.Cells(2, "B") = "=Month(A2)" ws.Cells(2, "B").Select Selection.AutoFill Destination:=Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row), Type:=xlFillDefault End Sub