我正在尝试编写一个插入重复行的宏(与列中指定的一样多),同时更改每个副本的日期。 像
这样的东西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
复制部分效果很好,但是日期变化令我头疼。我试过
Cells(x,y).Value = Cells(x,y).Value + 1
但它不适用于日期
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
答案 0 :(得分:1)
也许尝试从单元格的内容创建Date
类型变量,即
如果Range("A1")
是20/01/2013
,那么
dim myDate as Date
myDate = CDate(Range("A1"))
Cdate()
将单元格中的任何内容转换为Date
类型。因此,您不是依赖编译器来选择单元格内容的数据类型,而是明确告诉编译器将内容视为Date。
现在您可以使用DateAdd()
功能
myDate = DateAdd("d", 1, myDate)
并写回不同的单元格
Range("A2") = myDate
单线可能是
Cells(x,y).Offset(1,0) = DateAdd("d", 1, Cdate(Cells(x,y)))
可能更容易解决的问题是
Cells(x, y) = CDate(Cells(x,y)) + 1
但现在,至少你理解为什么和如何