Постановка задачи
В VBA можно использовать три основных типа элементов управления датой и временем при условии, что определенные oxx были зарегистрированы с использованием прав администратора. Это элементы управления VB6, которые не являются родными для среды VBA. Чтобы установить Montview Control и Datetime Picker, нам нужно установить ссылку на Microsoft MonthView Control 6.0 (SP4), доступ к которой возможен только при повышенной регистрации mscomct2.ocx. Аналогично для mscal.ocx и mscomctl.ocx. Сказав это, устаревший mscal.ocx может работать, а может и не работать в Windows 10.
В зависимости от вашей версии Windows и Office (32-битной или 64-битной), может быть очень больно регистрировать эти ocxs.
Элемент управления Monthview, Datetime Picker и устаревший элемент управления Calendar выглядят следующим образом.
Так с какой проблемой я могу столкнуться, если я включу это в свое выражение?
Если вы включите их в свой проект и передадите их своим друзьям, соседям, клиентам и т.д., Приложение может работать, а может и не работать, в зависимости от того, установлены ли у них эти ocx.
И поэтому настоятельно рекомендуется НЕ использовать их в своем проекте
Какие альтернативы у меня есть?
Этот календарь, использующий пользовательскую форму и рабочий лист, был предложен ранее и является невероятно простым.
Когда я увидел календарь Windows 10, который появился, когда я щелкнул по дате и времени в системном трее, я не мог не задаться вопросом, можем ли мы повторить это в VBA.
Этот пост о том, как создать виджет календаря, который не зависит от ocx или 32bit/64bit и может свободно распространяться вместе с вашим проектом.
Вот как выглядит календарь в Windows 10:
и вот как вы взаимодействуете с ним: