1

我正在创建一个宏,该宏在一个月内输入每个日期的十个实例。我已经把它带到了日期的位置,但它们都只是在前十个单元格中相互粘贴。

我需要什么(但十套,而不是三套):

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

关于我需要在代码中使用什么的任何建议?

4

4 回答 4

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
于 2013-07-17T18:48:25.713 回答
1

Set Cell = [A1]在外For循环里面。

于 2013-07-17T18:49:50.967 回答
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 对我来说效果更好。

于 2013-07-17T19:18:34.373 回答
1

这已经得到了回答,但只是因为它有点不同:

    Range("A1:A310").Formula = "=DATE(2013,3,1)+INT(ROW()/10.01)"
    Range("A1:A310").Copy
    Range("A1").PasteSpecial xlPasteValues
    Application.CutCopyMode = False

它甚至可以一步完成(感谢我的同事 Hans 的一些帮助):

Range("A1:A310").Value = Evaluate("=INDEX(DATE(2013,3,1)+INT(ROW(A1:A310)/10.01),0)")
于 2013-07-17T19:58:01.240 回答