Макрос VBA вернется в конце месяца - PullRequest
2 голосов
/ 13 декабря 2010

Это мой первый пост на этом сайте.

Мне нужна помощь по некоторому коду VBA, который поместит 31/07/00 в ячейку «B2», а затем каждую дату окончания месяца вниз по столбцу и остановится на 31/11/2010 в ячейке «B126» (т.е. B2 = 31/07/00, BA3 = 31/08/00, B4 = 30/09/00 и т. Д.). Должен ли я сделать цикл для этого? Я действительно не могу сделать это с помощью устройства записи макросов, так я изучаю большую часть своего VBA-кодирования.

Спасибо всем за помощь.

Ответы [ 3 ]

5 голосов
/ 13 декабря 2010
Sub FillDates()

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

End Sub

Это помещает первую дату в B2, затем использует автозаполнение Excel (дескриптор заполнения из ответа Джоэла), чтобы заполнить месяцы в следующих 125 строках.

2 голосов
/ 13 декабря 2010

Зачем вам нужен макрос для этого? Автозаполнение Excel довольно умное.

  • Поместите 31/7/00 в B2
  • Поместите 31/8/00 в B3
  • Выберите обе ячейки
  • Возьмите ручку заполнения (крошечный квадрат в правом нижнем углу выделения)
  • Перетащите его вниз, сколько вам нужно
0 голосов
/ 13 декабря 2010
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) и выберите «atpvbaen.xls».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...