VBA:使用DateAdd函数

我有一个电子表格,其中有三个相同的行。 例如下面的A代表一行信息。 S列是date。 我想将每个序列的第二行S列中的date更改为原始date之后的一个月,并将每个序列的第三行更改为原始date之后的两个月,并使用循环继续执行整个电子表格和DateAdd函数。

这里是我现在的代码,但我得到一个编译错误的DateAdd函数(这是我第一次使用它):

 Sub DateChange() Dim r As Long Application.ScreenUpdating = False For r = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 With Cells(r, 1).EntireRow .Copy .Resize(2).Offset(1, 0).Insert Shift:=xlDown End With Cells(r + 1, "S").Value = DateAdd("m", 1, Cells(r, "S")) Cells(r + 2, "S").Value = DateAdd("m", 2, Cells(r, "S")) Next r Application.ScreenUpdating = True End Sub 

如果你使用DataAdd函数遇到困难,那么你可以像这样绕过它:

 Option Explicit Sub DateChange() Dim r As Long Dim dttTemp As Date Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") Application.ScreenUpdating = False For r = ws.Range("A" & ws.Rows.Count).End(xlUp).Row To 1 Step -1 With ws.Cells(r, 1).EntireRow .Copy .Resize(2).Offset(1, 0).Insert Shift:=xlDown End With dttTemp = ws.Cells(r, "S").Value ws.Cells(r + 1, "S").Value = DateSerial(Year(dttTemp), Month(dttTemp) + 1, Day(dttTemp)) ws.Cells(r + 2, "S").Value = DateSerial(Year(dttTemp), Month(dttTemp) + 2, Day(dttTemp)) Next r Application.ScreenUpdating = True End Sub 

请注意,我也完全符合所有参考资料(为了良好的编码习惯和避免错误)。 这意味着我指的是ThisWorkbook.Worksheets("Sheet1").Cells(r, "S").Value而不是Cells(r, "S") (如你所做的)。 像这样,VBA知道在哪个Excel文件中查找,以及在search单元格S3 (例如)时查看哪个表单。 另外,我告诉VBA,我对该单元格的.Value而不是.Value2.Formula或其他任何东西感兴趣。

让我知道如果上述帮助。