擅长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一个Date
typesvariables。
如果Range("A1")
是20/01/2013
那么
dim myDate as Date myDate = CDate(Range("A1"))
Cdate()
将单元格中的内容转换为Date
types。 因此,不要依赖编译器来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你明白了为什么和如何