VBA:如何创建更改日期的循环

VBA:如何创建更改日期的循环,vba,excel,Vba,Excel,我有一张数据表,其中每一行都被复制和粘贴了三次。每一行在S列中都有一个日期。在这三个数据集中,第一行将保持原始日期,第二行将比原始日期晚一个月,第三行将比原始日期晚两个月 如何将其转换为一个循环,对整个工作表重复该过程?我的问题在于DateAdd函数。该函数出现编译错误(以前从未使用过)。提前谢谢!以下是迄今为止我掌握的代码: Sub DateChange() Dim r As Long Application.ScreenUpdating = False For r = Range("

我有一张数据表,其中每一行都被复制和粘贴了三次。每一行在S列中都有一个日期。在这三个数据集中,第一行将保持原始日期,第二行将比原始日期晚一个月,第三行将比原始日期晚两个月

如何将其转换为一个循环,对整个工作表重复该过程?我的问题在于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

假设您的代码正常工作:

Sub DateChange()
    For r = 3 To 1000 Step 3
        Sheets("NameOfYourSheet").Range("S" & r) = "=DATE(YEAR(R[-1]C),MONTH(R[-1]C)+1,DAY(R[-1]C))"
        Sheets("NameOfYourSheet").Range("S" & r).AutoFill Destination:=Range("S3:S4"), Type:=xlFillDefault
    Next r
End Sub

这里有一个替代DateAdd的方法,该方法由于目前未知的原因而出错

Sub Macro()

Dim r As Long, d As String

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
    d = Cells(r, "S").Address
    Cells(r + 1, "S").Value = Evaluate("date(year(" & d & "),month(" & d & ")+1,day(" & d & "))")
    Cells(r + 2, "S").Value = Evaluate("date(year(" & d & "),month(" & d & ")+2,day(" & d & "))")
Next r

Application.ScreenUpdating = True

End Sub

您选择单元格并使用
ActiveCell
而不是
单元格(r,c)
有什么原因吗?一般来说,后者的效果更好。没有理由,我会把它改为Cells(r,c),因为最初的代码是有效的,但这没有。他们有什么我应该包括在这里面的吗?你会如何淡化你的变数?非常感谢。这个循环不起作用,因为你每行循环一次,OP需要每3行循环一次(如果我理解正确的话)是的,没错。每3行就需要一个循环。增加了
步骤3
,这意味着
r
每次迭代将增加3。谢谢,这太棒了!