Главная Новости

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


Опубликовано: 01.09.2018

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

Функции даты в Excel

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


Работа с датами и временем в Microsoft Excel

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

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

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


Функция DateDiff в запросах Access

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

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

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

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

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

*Выражение «Прошлый месяц» используется в значении «Предыдущий месяц».

**Выражение «Прошлый год» используется в значении «Предыдущий год».

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

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

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

Private Sub Button1_Click() With UserForm1 .TextBox1.Text = DateSerial(Year(Date), Month(Date), 1) .TextBox2.Text = Date .Show End With End Sub

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

'в соответствии с системными настройками .TextBox1.Text = Format(DateSerial(Year(Date), Month(Date), 1), "Short Date") .TextBox2.Text = Format(Date, "Short Date") 'по заданному формату .TextBox1.Text = Format(DateSerial(Year(Date), Month(Date), 1), "dd.mm.yyyy") .TextBox2.Text = Format(Date, "dd.mm.yyyy")

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

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

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

Private Sub CommandButton1_Click() TextBox1.Text = Date TextBox2.Text = Date End Sub

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

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

Private Sub CommandButton2_Click() TextBox1.Text = Date - 1 TextBox2.Text = Date - 1 End Sub

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

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

Private Sub CommandButton3_Click() TextBox1.Text = DateSerial(Year(Date), Month(Date), 1) TextBox2.Text = Date End Sub

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

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

Private Sub CommandButton4_Click() TextBox1.Text = DateSerial(Year(Date), Month(Date) - 1, 1) TextBox2.Text = DateSerial(Year(Date), Month(Date), 0) End Sub

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

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

Private Sub CommandButton5_Click() TextBox1.Text = DateSerial(Year(Date) - 1, 1, 1) TextBox2.Text = DateSerial(Year(Date) - 1, 12, 31) End Sub

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

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

rss