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

VBA Excel. Элемент управления DTPicker

    Элемент управления пользовательской формы DTPicker (поле с календарем), предназначенный для выбора и ввода даты. Примеры кода VBA Excel с DTPicker.

    Элемент управления DTPicker

    UserForm.DTPicker – это элемент управления пользовательской формы, представляющий из себя отформатированное текстовое поле с раскрывающимся календарем, клик по выбранной дате в котором записывает ее в текстовое поле.

    Элемент управления DTPicker

    При вызове календаря пользовательская форма теряет фокус – это видно на изображении. При редактировании даты непосредственно в текстовом поле DTPicker, формат поля позволяет изменять элементы даты (день, месяц, год) по отдельности.

    Чтобы перемещаться между элементами даты, необходимо, или выбирать элемент мышью, или нажимать любой знак разделителя («.», «,» или «/») на клавиатуре. А клик по знаку «+» или «-», соответственно, увеличит или уменьшит значение элемента даты на единицу.

    Если в элемент «год» ввести однозначное число или двузначное число, не превышающее двузначный остаток текущего года, через пару секунд автоматически добавятся первые две цифры текущего столетия (20). Если вводимое двузначное число превысит двузначный остаток текущего года, автоматически добавятся первые две цифры прошлого столетия (19).

    DTPicker – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.

    Добавление DTPicker на Toolbox

    Изначально на панели инструментов Toolbox нет ссылки на элемент управления DTPicker, поэтому ее нужно добавить самостоятельно.

    Чтобы добавить DTPicker на панель инструментов Toolbox, кликните по ней правой кнопкой мыши и выберите из контекстного меню ссылку «Additional Controls…»:

    Добавление дополнительных элементов управления на Toolbox

    В открывшемся окне «Additional Controls» из списка дополнительных элементов управления выберите строку «Microsoft Date and Time Picker Control»:

    Выбор DTPicker в окне «Additional Controls»

    Нажмите кнопку «OK» и значок элемента управления DTPicker появится на панели инструментов Toolbox:

    Значок элемента управления DTPicker на панели инструментов Toolbox

    Свойства поля с календарем

    Свойство Описание
    CalendarBackColor Заливка (фон) календаря без заголовка.
    CalendarForeColor Цвет шрифта чисел выбранного в календаре месяца.
    CalendarTitleBackColor Заливка заголовка календаря и фон выбранной даты.
    CalendarTitleForeColor Цвет шрифта заголовка (месяц и год) и выбранного в календаре числа.
    CalendarTrailingForeColor Цвет шрифта чисел предыдущего и следующего месяца.
    CheckBox В значении True отображает встроенный в DTPicker элемент управления CheckBox. По умолчанию – False.
    ControlTipText Текст всплывающей подсказки при наведении курсора на DTPicker.
    CustomFormat Пользовательский формат даты и времени. Работает, когда свойству Format присвоено значение dtpCustom (3).
    Day (Month, Year) Задает или возвращает день (месяц, год).
    DayOfWeek Задает или возвращает день недели от 1 до 7, отсчет начинается с воскресенья.
    Enabled Возможность раскрытия календаря, ввода и редактирования даты/времени. True – все перечисленные опции включены, False – выключены (элемент управления становится серым).
    Font Шрифт отображаемого значения в отформатированном поле элемента управления.
    Format Формат отображаемого значения в поле элемента управления DTPicker, может принимать следующие значения: dtpCustom (3), dtpLongDate (0), dtpShortDate (1) (по умолчанию) и dtpTime (2).
    Height Высота элемента управления DTPicker с нераскрытым календарем.
    Hour (Minute, Second) Задает или возвращает часы (минуты, секунды).
    Left Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления.
    MaxDate Максимальное значение даты, которое может быть выбрано в элементе управления (по умолчанию – 31.12.9999).
    MinDate Минимальное значение даты, которое может быть выбрано в элементе управления (по умолчанию – 01.01.1601).
    TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с нуля.
    Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления.
    UpDown Отображает счетчик вместо раскрывающегося календаря. True – отображается SpinButton, False – отображается календарь (по умолчанию).
    Value Задает или возвращает значение (дата и/или время) элемента управления.
    Visible Видимость поля с календарем. True – DTPicker отображается на пользовательской форме, False – DTPicker скрыт.
    Width Ширина элемента управления DTPicker с нераскрытым календарем.

    DTPicker – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.

    Примеры кода VBA Excel с DTPicker

    Программное создание DTPicker

    Динамическое создание элемента управления DTPicker с помощью кода VBA Excel на пользовательской форме с любым именем:

    Данный код должен быть размещен в модуле формы. Результат работы кода:

    Динамически созданный DTPicker

    Применение свойства CustomFormat

    Чтобы задать элементу управления DTPicker пользовательский формат отображения даты и времени, сначала необходимо присвоить свойству Format значение dtpCustom. Если этого не сделать, то, что бы мы не присвоили свойству CustomFormat, будет применен формат по умолчанию (dtpShortDate) или тот, который присвоен свойству Format.

    В данном примере создается пользовательский формат для полей с календарем DTPicker1 и DTPicker2, размещенных на пользовательской форме, и отображаются в них текущие дата и время.

    Результат работы кода:
    DTPicker - отображение даты и времени в пользовательском формате
    Таблица специальных символов и строк, задающих пользовательский формат даты и времени (регистр символов имеет значение):

    Символы и строки Описание
    d День месяца из одной или двух цифр.
    dd День месяца из двух цифр. К числу из одной цифры впереди добавляется ноль.
    ddd Сокращенное название дня недели из двух символов (Пн, Вт и т.д.).
    dddd Полное название дня недели.
    h Час из одной или двух цифр в 12-часовом формате.
    hh Час из двух цифр в 12-часовом формате. К часу из одной цифры впереди добавляется ноль.
    H Час из одной или двух цифр в 24-часовом формате.
    HH Час из двух цифр в 24-часовом формате. К часу из одной цифры впереди добавляется ноль.
    m Минута из одной или двух цифр.
    mm Минута из двух цифр. К минуте из одной цифры впереди добавляется ноль.
    M Месяц из одной или двух цифр.
    MM Месяц из двух цифр. К месяцу из одной цифры впереди добавляется ноль.
    MMM Сокращенное название месяца из трех символов.
    MMMM Полное название месяца.
    s Секунда из одной или двух цифр.
    ss Секунда из двух цифр. К секунде из одной цифры впереди добавляется ноль.
    y Год из одной или двух последних цифр.
    yy Год из двух последних цифр.
    yyyy Год из четырех цифр.

    Создание границ интервала дат

    Простенький пример, как задать интервал дат с начала месяца до текущего дня с помощью двух элементов управления DTPicker:

    Результат работы кода, запущенного 23.11.2020:

    Интервал дат, заданный с помощью двух элементов управления DTPicker

    DTPicker – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.

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

    11 комментариев для “VBA Excel. Элемент управления DTPicker”

    1. Станислав

      Здравствуйте, подскажите… Вставил в форму 2 календаря. DTPicker1.Format = dtpShortDate и DTPicker2.Format = dtpTime и вставляю нужное значение в активную ячейку. Но вставляется помимо нужной даты и времени сегодняшняя дата (в свойствах DTPicker2 это Value). Получается например: 15.04.2021 27.04.2021 01:45:00 Как убрать эту лишнюю дату?

      1. Станислав

        Решил так

    2. Подскажите, а можно ли изменить формат времени в DTPicker с 00:00:00 на 00:00 (убрать секунды)? если да то как это сделать? Спасибо

    3. Евгений

      Павел, попробуйте присвоить свойству Format значение dtpCustom, а свойству CustomFormat задайте свой формат даты и времени. Проверить не могу, так как установил Excel 2016 64-bit, в библиотеках которого DTPicker отсутствует.

    4. Для Win11 как в «Additional Controls» добавить «Microsoft Date and Time Picker Control»? Файла mscomct2.ocx на компьютере нет.

      1. Евгений

        Сергей, могу предположить, что у вас 64-разрядная версия Excel. В этом случае, DTPicker не появится, даже если вы загрузите файл mscomct2.ocx и зарегистрируете его в системе.

    5. Здравствуйте. К сожалению не понятно где находится панель с toolbox. Если рядом с кнопкой «Режим конструктора» есть кнопка «Вставить» , то там нет предложения что-либо добавить типа вашего «Additional Controls…»

      1. Евгений

        Здравствуйте, Виктор!
        Выберите в проводнике редактора VBA поисковую форму, или создайте ее, если у вас ее нет. Подпункт меню Toolbox станет активным в списке пункта View главного меню.

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