VBA宏将连续月末回归

时间:2010-12-13 00:17:14

标签: excel-vba vba excel

这是我在本网站上发表的第一篇文章。

我需要一些VBA代码的帮助,这些代码将31/07/00放入单元格“B2”,然后每个月末日期在列中,并在2010年11月31日在单元格“B126”中停止(即单元格B2 = 31/07/00,BA3 = 31/08/00,B4 = 30/09/00等等)。我应该为此做一个循环吗?我不能用宏录音机真正做到这一点,这就是我学习大部分VBA编码的方法。

感谢大家的帮助。

3 个答案:

答案 0 :(得分:5)

Sub FillDates()

    With Sheet1.Range("B2")
        .Value = DateSerial(2000, 7, 31)
        .AutoFill .Resize(125, 1), xlFillMonths
    End With

End Sub

这将第一个日期放在B2中,然后使用Excel的自动填充(来自Joel答案的填充句柄)来填充接下来的125行中的月份。

答案 1 :(得分:2)

为什么需要宏来做呢? Excel的自动填充非常聪明。

  • 将31/7/00放入B2
  • 将31/8/00放入B3
  • 选择两个单元格
  • 抓住填充手柄(选区右下方的小方块)
  • 根据需要将其向下拖动

答案 2 :(得分:0)

Sub EndOfMonths()

    Dim StartCell As Range
    Dim n As Integer
    '
    Set StartCell = Range("B2")
    StartCell.Value = DateSerial(2000, 7, 31)
    '

    Do
        n = n + 1
        StartCell.Offset(n, 0).Value = CDate(eomonth(StartCell, n))

    Loop While StartCell.Offset(n, 0).Value < DateSerial(2010, 11, 30)
    '
End Sub

如果使用Excel 2003,请转到Visual Basic编辑器(Alt + F11)菜单:Extras-&gt; Reference并选择“atpvbaen.xls”。