擅长VBA:从电子表格到date/时间的date操作

我正在尝试编写一个插入重复行的macros(与列中指定的行数一样多),同时为每个重复项提前更改date。 就像是

BEFORE AFTER 20/01/2013 2 20/01/2013 2 28/02/2013 0 21/01/2013 2 15/03/2013 1 22/01/2013 2 28/02/2013 0 15/03/2013 1 16/03/2013 1 

重复的部分工作得很好,但是date的改变让我很头疼。 我试着用

 Cells(x,y).Value = Cells(x,y).Value + 1 

但是不能和date一起工作

Dateadd还没有带我到任何地方…这里的代码…谢谢任何人谁将帮助我

 Sub Macro2() ' ' Macro2 Macro ' ola ' Dim i As Integer Dim x As Integer Dim y As Integer Dim k As Integer Dim z As Integer i = 2 x = Application.InputBox("Number of Rows", "Number of Rows", Type:=1) k = Application.InputBox("Column", "Choose 1 for A, 2 for B, 5 for E...", Type:=1) Do y = Cells(i, k).Value If y = 0 Then i = (i + 1) Cells(i, k).Activate Else z = 0 ActiveCell.EntireRow.Copy Range(ActiveCell.Offset(y), ActiveCell.Offset(1)).EntireRow.Insert Do i = i + 1 z = z + 1 Cells(i, 2).Value = Cells(i, 2).Value + z Loop While z < (y + 1) Cells(i, k).Activate Application.CutCopyMode = False End If Loop While i < x End Sub 

也许尝试从单元格的内容,即创build一个Datetypesvariables。

如果Range("A1")20/01/2013那么

 dim myDate as Date myDate = CDate(Range("A1")) 

Cdate()将单元格中的内容转换为Datetypes。 因此,不要依赖编译器来select单元格内容的数据types,而是明确告诉编译器将内容视为Date。

现在你可以使用DateAdd()函数来添加date

 myDate = DateAdd("d", 1, myDate) 

并写回到不同的单元格

 Range("A2") = myDate 

一个class轮可能是

 Cells(x,y).Offset(1,0) = DateAdd("d", 1, Cdate(Cells(x,y))) 

可能更简单的解决scheme就是说

 Cells(x, y) = CDate(Cells(x,y)) + 1 

但现在,至less你明白了为什么如何