Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Автоматическое заполнение интервала дат (периода)

    Автоматическое заполнение интервала дат при открытии диалогового окна для выбора периода, а также при нажатии кнопок: «Сегодня», «Вчера», «Этот месяц», «Прошлый месяц», «Прошлый год» с помощью VBA Excel. Скачать файл с примером.

    Диалоговое окно для выбора периода

    Автоматическое заполнение интервала дат в VBA Excel рассмотрим на примере диалогового окна, прообраз которого использовался на практике для выбора периода формирования отчета о сданной выручке в разрезе торговых точек. Правда, кнопка выбора интервала дат была только для прошлого месяца, а открывалась форма с предзаполненными датами текущего месяца, остальные периоды устанавливались вручную, но ими почти не приходилось пользоваться.

    Пример диалогового окна для выбора периода

    Диалоговое окно выбора периода
    Диалоговое окно для выбора периода

    Для вызова пользовательской формы используется вставленная на рабочий лист кнопка из панели «Элементы ActiveX». Расположить ее лучше на закрепленной верхней строке листа, чтобы кнопка не уезжала за пределы экрана при прокрутке.

    Итак, перечислим названия объектов (элементов управления), которые будут задействованы в приведенных примерах кода:

    • пользовательская форма (диалоговое окно выбора периода) — UserForm1;
    • текстовое поле для ввода начальной даты — TextBox1;
    • текстовое поле для ввода конечной даты — TextBox2;
    • кнопка «Сегодня» — CommandButton1;
    • кнопка «Вчера» — CommandButton2;
    • кнопка «Текущий месяц» — CommandButton3;
    • кнопка «Прошлый месяц»* — CommandButton4;
    • кнопка «Прошлый год»** — CommandButton5;
    • кнопка для вызова диалогового окна, расположенная на рабочем листе — Button1***.

    *Выражение «Прошлый месяц» используется в значении «Предыдущий месяц».
    **Выражение «Прошлый год» используется в значении «Предыдущий год».
    ***По-умолчанию кнопка на рабочем листе была создана с именем CommandButton1, но была изменена, чтобы отличалась по названию от кнопки «Сегодня».

    Открытие диалогового окна с заполненным периодом

    Код вызова пользовательской формы находится в модуле листа, которому принадлежит кнопка Button1. При ее нажатии происходит заполнение формы прошедшим интервалом текущего месяца (с первого числа месяца по текущую дату включительно) и отображение диалогового окна на экране.

    Присваивая значения выражений элементам TextBox, Excel по-умолчанию преобразует дату в текст, форматируя в соответствии с системными настройками, но можно применить и принудительное форматирование:

    Кнопки для смены интервала дат

    Теперь рассмотрим смену периода с помощью размещенных на пользовательской форме кнопок. Код расположен в модуле пользовательской формы.

    Кнопка «Сегодня»

    Поля начальной и конечной дат заполняются значениями текущей даты.

    Кнопка «Вчера»

    Поля начальной и конечной дат заполняются значениями прошедшей (вчерашней) даты.

    Кнопка «Текущий месяц»

    Поле начальной даты заполняется значением первого дня текущего месяца, а поле конечной — значением текущей даты.

    Кнопка «Прошлый месяц»

    Поле начальной даты заполняется значением первого дня предыдущего месяца, а поле конечной — значением последнего дня предыдущего месяца.

    Кнопка «Прошлый год»

    Поле начальной даты заполняется значением первого дня предыдущего года, а поле конечной — значением последнего дня предыдущего года.

    Вы можете скачать файл с примером и протестировать на нем заполнение диалоговой формы различными интервалами дат. Форма закрывается нажатием на крестик, кнопки «OK» и «Отмена» неактивны. По аналогии с кнопкой «Прошлый год» можете добавить кнопку «Текущий год».

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    2 комментария для “VBA Excel. Автоматическое заполнение интервала дат (периода)”

    1. Дмитрий

      Здравствуйте ! подскажите а возможно ли применить это все к диапазону в столбце с датами

    2. Евгений

      Здравствуйте, Дмитрий! Я правильно понял, что вы спрашиваете, можно ли выделить диапазон в столбце с датами и открыть форму с начальной и конечной датой этого диапазона?

    Обсуждение закрыто.