我正在创建一个宏,它在一个月内输入每个日期的十个实例。我已经把它带到了日期的地方,但它们都只是在前十个单元格中相互粘贴。
我需要什么(但是十个,而不是三个):
3/1/2013
3/1/2013
3/1/2013
3/2/2013
3/2/2013
3/2/2013
3/3/2013
3/3/2013
3/3/2013
我的代码:
Sub Macro1()
Dim v&, MyDate As Date, Cell As Range
For i = DateValue("3/01/2013") To DateValue("3/31/2013")
Set Cell = [A1]
For v = 0 To 9 ' 9 means 10 cells
Cell.Offset(v, 0).Value = i
Next v
Next i
End Sub
我需要在代码中使用什么建议吗?
答案 0 :(得分:1)
无需循环。
Sub test()
Range("A1") = #3/1/2013#
Range("A1:A10").DataSeries
End Sub
评论后更新
Sub test()
Range("A1") = #3/1/2013#
For i = 1 To 31
lastRow = Range("A" & Rows.Count).End(xlUp).Row + 1
If i = 1 Then
Range("A1:A" & i * 10) = DateAdd("d", i - 1, #3/1/2013#)
Else
Range("A" & lastRow & ":A" & i * 10) = DateAdd("d", i - 1, #3/1/2013#)
End If
Next
End Sub
答案 1 :(得分:1)
您的Set Cell = [A1]
位于外部For
圈内。
答案 2 :(得分:1)
Sub Macro1()
Dim v&, MyDate As Date, Cell As Range
Range("A1").Select
Set Cell = [A1]
For i = DateValue("3/01/2013") To DateValue("3/31/2013")
For v = 0 To 9
ActiveCell.Value = i
ActiveCell.Offset(1, 0).Select
Next v
Next i
End Sub
虽然1/3/13和31/3/13对我来说效果更好。
答案 3 :(得分:1)
这已经得到了解答,但仅仅因为它有点不同:
Range("A1:A310").Formula = "=DATE(2013,3,1)+INT(ROW()/10.01)"
Range("A1:A310").Copy
Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
甚至可以一步完成(感谢我的同事汉斯的一些帮助):
Range("A1:A310").Value = Evaluate("=INDEX(DATE(2013,3,1)+INT(ROW(A1:A310)/10.01),0)")