Dtpicker как установить в excel
I have a windows 7 64-bit, with Office Professional Plus 2010 (version 14.0.4760.1000) 32bit (had the 64-bit but it lacks way too many Excel controls).
I'm really only trying to add a DTPicker to my worksheet (and I have to stick to it and not find some other custom controls), a task that was done easily in previous versions (including 2007) but for reasons beyond me doesn't work in this version.
I've registered my mscomct2.ocx in the SysWOW64 folder using the SysWOW64 regsvr32 (not the system32 regsvr32), I can see the control when (Insert > ActiveX Controls > Microsoft Date and Time Picker Control 6.0 (SP6)) but when I try to place it on a worksheet I keep getting "Cannot insert object" error. This control is not (or at least was never) limited to UserForm (not that I can add this control to a UserForm in 2010 anyways) then why am I getting this error? better yet, what should I do? I've spent more than 6 hours reading pretty much any post out there about DTPicker issues (but nothing in 2010, only 2007), and mscomct2, mscomcl for 64/32.
I'm extremely frustrated with this issue and any help would be much appreciated
This thread is locked. You can follow the question or vote as helpful, but you cannot reply to this thread.
Report abuse
Harassment is any behavior intended to disturb or upset a person or group of people. Threats include any threat of suicide, violence, or harm to another. Any content of an adult theme or inappropriate to a community web site. Any image, link, or discussion of nudity. Any behavior that is insulting, rude, vulgar, desecrating, or showing disrespect. Any behavior that appears to violate End user license agreements, including providing product keys or links to pirated software. Unsolicited bulk mail or bulk advertising. Any link to or advocacy of virus, spyware, malware, or phishing sites. Any other inappropriate content or behavior as defined by the Terms of Use or Code of Conduct. Any image, link, or discussion related to child pornography, child nudity, or other child abuse or exploitation.
Replies (4)
I not test it with the DTPicker control but the calendar control is working in 2010 when you
download and register it
"nwein" wrote in message news:*** Email address is removed for privacy ***.
I have a windows 7 64-bit, with Office Professional Plus 2010 (version 14.0.4760.1000) 32bit (had the 64-bit but it lacks way too many Excel controls).
I'm really only trying to add a DTPicker to my worksheet (and I have to stick to it and not find some other custom controls), a task that was done easily in previous versions (including 2007) but for reasons beyond me doesn't work in this version.*
I've registered my mscomct2.ocx in the SysWOW64 folder using the SysWOW64 regsvr32 (not the system32 regsvr32), I can see the control when (Insert > ActiveX Controls > Microsoft Date and Time Picker Control 6.0 (SP6)) but when I try to place it on a worksheet I keep getting "Cannot insert object" error. This control is not (or at least was never) limited to UserForm (not that I can add this control to a UserForm in 2010 anyways) then why am I getting this error? better yet, what should I do? I've spent more than 6 hours reading pretty much any post out there about DTPicker issues (but nothing in 2010, only 2007), and mscomct2, mscomcl for 64/32.
I'm extremely frustrated with this issue and any help would be much appreciated*
Report abuse
Harassment is any behavior intended to disturb or upset a person or group of people. Threats include any threat of suicide, violence, or harm to another. Any content of an adult theme or inappropriate to a community web site. Any image, link, or discussion of nudity. Any behavior that is insulting, rude, vulgar, desecrating, or showing disrespect. Any behavior that appears to violate End user license agreements, including providing product keys or links to pirated software. Unsolicited bulk mail or bulk advertising. Any link to or advocacy of virus, spyware, malware, or phishing sites. Any other inappropriate content or behavior as defined by the Terms of Use or Code of Conduct. Any image, link, or discussion related to child pornography, child nudity, or other child abuse or exploitation.
UserForm.DTPicker – это элемент управления пользовательской формы, представляющий из себя отформатированное текстовое поле с раскрывающимся календарем, клик по выбранной дате в котором записывает ее в текстовое поле.
При вызове календаря пользовательская форма теряет фокус – это видно на изображении. При редактировании даты непосредственно в текстовом поле DTPicker, формат поля позволяет изменять элементы даты (день, месяц, год) по отдельности.
Чтобы перемещаться между элементами даты, необходимо, или выбирать элемент мышью, или нажимать любой знак разделителя («.», «,» или «/») на клавиатуре. А клик по знаку «+» или «-», соответственно, увеличит или уменьшит значение элемента даты на единицу.
Если в элемент «год» ввести однозначное число или двузначное число, не превышающее двузначный остаток текущего года, через пару секунд автоматически добавятся первые две цифры текущего столетия (20). Если вводимое двузначное число превысит двузначный остаток текущего года, автоматически добавятся первые две цифры прошлого столетия (19).
DTPicker – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.
Добавление DTPicker на Toolbox
Изначально на панели инструментов Toolbox нет ссылки на элемент управления DTPicker, поэтому ее нужно добавить самостоятельно.
Чтобы добавить DTPicker на панель инструментов Toolbox, кликните по ней правой кнопкой мыши и выберите из контекстного меню ссылку «Additional Controls…»:
В открывшемся окне «Additional Controls» из списка дополнительных элементов управления выберите строку «Microsoft Date and Time Picker Control»:
Свойства поля с календарем
Свойство | Описание |
---|---|
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 на пользовательской форме с любым именем:
Данный код должен быть размещен в модуле формы. Результат работы кода:
Применение свойства CustomFormat
Чтобы задать элементу управления DTPicker пользовательский формат отображения даты и времени, сначала необходимо присвоить свойству Format значение dtpCustom. Если этого не сделать, то, что бы мы не присвоили свойству CustomFormat, будет применен формат по умолчанию (dtpShortDate) или тот, который присвоен свойству Format.
В данном примере создается пользовательский формат для полей с календарем DTPicker1 и DTPicker2, размещенных на пользовательской форме, и отображаются в них текущие дата и время.
Результат работы кода:
Таблица специальных символов и строк, задающих пользовательский формат даты и времени (регистр символов имеет значение):
Символы и строки | Описание |
---|---|
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 – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.
6 комментариев для “VBA Excel. Элемент управления DTPicker”
Здравствуйте, подскажите… Вставил в форму 2 календаря. DTPicker1.Format = dtpShortDate и DTPicker2.Format = dtpTime и вставляю нужное значение в активную ячейку. Но вставляется помимо нужной даты и времени сегодняшняя дата (в свойствах DTPicker2 это Value). Получается например: 15.04.2021 27.04.2021 01:45:00 Как убрать эту лишнюю дату?
Здравствуйте! У Вас нет темы по работе с фильтром. Можно проконсультироваться на этот счёт?
Здравствуйте, Сергей!
Задавайте вопрос, постараюсь ответить.
Спасибо, Евгений! Имеется в Excel столбец с включённым автофильтром. Можно ли программно запустить окно фильтра для выбора значений? Т.е. не руками нажимать на иконку фильтра, а заставить окно открываться с помощью макроса. Спасибо за ответ.
Да, это возможно:
Сергей, уточните вопрос: нужно программно нажать кнопки Ok и Отмена или отследить, какая из них была нажата?
Просто отследить, какая кнопка нажата.
По предыдущему вопросу. Я вставил sendkeys… в конец макроса, который запускается при нажатии кнопки на листе. Окно фильтра появляется и тут же закрывается. А как сделать, чтобы окно осталось, и пользователь мог выбрать данные?
Евгений, я разобрался, почему не выводилось окно с фильтром.
Пример отслеживания нажатий кнопки «OK» автофильтра. На нажатие кнопки «Отмена» код не реагирует.
Вставьте в стандартный модуль (в примере — Module1) объявление глобальной переменной и код процедуры для кнопки:
Range("A1").CurrentRegion можно заменить на имя таблицы.
Евгений, а формулу в поле B2 оставлять или её можно удалить?
Можно удалить, если в таблице есть другие формулы. Я изменил код процедуры Worksheet_Calculate() в предыдущем примере, чтобы она не реагировала на изменение формул, а только на нажатие кнопки «OK» автофильтра. Range("A1") — это ячейка с кнопкой фильтра.
Евгений, спасибо за корректировку процедуры. Думаю, в ней и поле myString1 необязательно (и связанная проверка с ним), т.к. пользователь может выбрать все значения.
Но… после команды SendKeys "%" событие Worksheet_Calculate() отрабатывается только один раз :(.
Сергей, событие Worksheet_Calculate() не зависит от команды SendKeys "%" . Ограничение стоит здесь:
Код в процедуре Worksheet_Calculate() срабатывает только когда активна ячейка Range("A1") . Если заменить в этой строке Range("A1") на диапазон строки заголовков таблицы, тогда код будет срабатывать при любой активной ячейке в заголовке.
В переменную myString записывается состояние таблицы до применения фильтра, в переменную myString1 — после применения. Затем их содержимое сравнивается: если они содержат разные значения — значит, фильтр был применен.
Здравствуйте! может я не туда пишу. вопрос
нужно посчитать кол-во строк в столбце «В» (от 100 до 5000) и вставить в формулу вместо 744
table = Range("B2:C744")
спасибо.
В столбце «B» не должно быть пустых ячеек до последней строки таблицы.
Как определить в VBA есть узор в ячейке?
Спасибо за достаточно полную информацию.
Был бы очень вам признателен, если бы вы подсказали:
как изменить ширину блоков верхнего колонтитула.
«Введена слишком длинная строка. Уменьшите число знаков.»
При изменении шрифта с полужирного на обычный всё нормально
воспринимается,
Прошу прощения, если не по адресу.
Добрый день! Никак не могу решить проблему с заблокированным автофильтром на защищенном макросом (нашел на форумах) листе. Подскажите пожалуйста, куда и какую строчку нужно добавить в макрос, чтобы при открытии файла был активен автофильтр:
Добрый день, Владислав!
Замените строку
Добрый день, Евгений!
ОГРОМНОЕ СПАСИБО. :))
Здравствуйте, помогите, пожалуйста, решить задачу((
Разработать программу «Кредитный калькулятор» для расчета выплат по кредиту в условиях начисления процентов по аннуитетной схеме постнумерандо. Форма должна предусматривать ввод:
1) сумма кредита, допустимы 2 знака после запятой;
2) процентная ставка (годовая), допустимы 2 знака после запятой;
3) количество периодов (месяцев), целое положительное число.
Также форма должна содержать две кнопки:
1) «Ok» (выполнить расчет, заполнить лист Excel, освободить форму и закончить работу программы);
2) «Отмена» (освободить форму и закончить работу программы).
На лист Excel следует вывести 5 колонок:
1) номер периода;
2) остаток кредита;
3) сумма процентов за пользование кредитом, подлежащая к оплате;
4) сумма погашения основного долга (кредита);
5) общая сумма выплат за период.
Форма должна быть открыта из макроса «main» и там же освобождена по завершению своего использования. Форма должна содержать только код работы с формой и ввода данных. Логика верификации данных должна быть, по возможности, отделена от кода формы. Бизнес-логика обязательно должна быть отделена от кода формы.
Здравствуйте, Рафия!
С разработкой кредитного калькулятора вам помогут только за плату на бирже фриланса.
Добрый день, Евгений! Я только начинаю работать с VBA. Помогите, пожалуйста, прописать код для автоматического перемещения курсора на ячейку вправо после заполнения предыдущей.
Здравствуйте, Ева! Для перемещения фокуса в ячейку справа код VBA не нужен: используйте для этого клавишу «Tab» или настройте клавишу «Enter» для перехода вправо (Файл >> Параметры >> Дополнительно).
Спасибо за ответ! Да, но это надо делать вручную; речь идёт об автоматическом перемещении курсора.
Доброго времени суток!
У меня Win XP, Office 2003. Начал в Word'е делать пользовательскую форму. Вставил в форму DTPicker. После переустановки системы и офиса при открытии формы в VBA ругается, что некоторые элементы не могут быть отображены и открывает форму без DTPicker'ов. В списке Additional control нет пункта MS DTPicker.
Подскажите, как быть?
Автоматическое раскрытие DTPicker
Доброго дня. На форме в XLS-файле размещен DTPicker. 1. Как раскрыть / развернуть / показать.
Импортирование данных из DTPicker
Приветствую всех) Тема вопроса, от новичка в программировании, такая: Посредством VBA создана.
Передать дату из DTPicker в цикл
Добрый день. Может кто сможет помочь не могу передать Дату из DTPicker1 в Цикл. Макрос.
Microsoft Data Time Picker (DTPicker)
Значить вставил в форму объект из инструментов DTPicker (календарь).. на другом компьютере с таким.
Проверьте, есть ли в каталоге Windows\System32\ библиотека mscomct2.ocx. Если нет - поищите на другом компе с установленным офиссом, можно более крутым и скопируйте. После этого, в VBA - Tools - References установить птицу на Microsoft Windows Common Controls-2 6.0(SP4). После этого, в Additional control поставить птицу на MS Date & Time Picker. Всё!
После этого, в VBA - Tools - References установить птицу на Microsoft Windows Common Controls-2 6.0(SP4).
После переустановки системы и офиса при открытии формы в VBA ругается, что некоторые элементы не могут быть отображены и открывает форму без DTPicker'ов.
В прошлый раз Вы устанавливали Access в составе Office - поэтому был и DTPicker, библиотека с которым устанавливается именно при полной установке Access.
В этот раз, видимо, Вы решили обойтись без Access.
В стандартной установке ни в 2003 ни в 2007 календаря нет, надо дополнительно в опциях установки Access ставить галку на элементе управления календарь
Можете попробовать "альтернативный" календарь:
Или такую его версию:
После копирования файла его необходимо зарегистрировать:
(просто скопировать файл недостаточно)
Жмём Пуск - Выполнить
вводим команду regsvr32 MSCOMCT2.OCX
и нажимаем ОК
В стандартной установке ни в 2003 ни в 2007 календаря нет, надо дополнительно в опциях установки Access ставить галку на элементе управления календарь
Я никогда не ставлю Access, в связи с отсутствием необходимости в нём, библиотеку копирую, дальше по описанному сценарию. Необходимости регистрации тоже ни разу не было. Правда, я использую 2000 офис.
В прошлый раз Вы устанавливали Access в составе Office - поэтому был и DTPicker, библиотека с которым устанавливается именно при полной установке Access.
В этот раз, видимо, Вы решили обойтись без Access.
Можете попробовать "альтернативный" календарь:
Или такую его версию:
После копирования файла его необходимо зарегистрировать:
(просто скопировать файл недостаточно)
Жмём Пуск - Выполнить
вводим команду regsvr32 MSCOMCT2.OCX
и нажимаем ОК
Спасибо! Заработало!
Acces у меня установлен, и, насколько помню, не полностью.
А что это за утилитка такая regsvr32? Расскажите или линк, плиз, киньте. Что это такое, для чего нужно и параметры командной строки. Заранее благодарен.
Решение
Средство Regsvr32 (Regsvr32.exe) предназначено для регистрации и отмены регистрации элементов управления OLE, например автоматически регистрируемых DLL- или OCX-файлов.
Данная команда регистрирует в реестре файлы .dll как компоненты команды.
Синтаксис
regsvr32 [/u] [/s] [/n] [/i[:cmdline]] dllname
Параметры
dllname Задает имя файла dll для последующей регистрации.
/? Вывод справки в командной строке.
Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel.
Добавляет в контекстное меня ячеек пункт выбора даты, а при выделении ячеек, содержащих дату, справа от ячейки отображает значок календаря.
Поместите файл надстройки из вложения в папку автозагрузки Excel (C:\Program Files\Microsoft Office\OFFICExx\XLSTART).
В контекстном меню ячеек появляется новый пункт - "Выбрать дату из календаря".
Рядом с ячейками, в которые уже введена дата, будет отображаться маленький календарик, щелчок по которому вызовет большой календарь - для выбора даты.
Второй прикреплённый к статье файл - та же надстройка, только в которой неделя начинается с понедельника (в оригинале надстройки - с воскресенья)
Пароль на проект VBA - 1 (единица)
PS: Этот макрос написал не я (автор - samrad)
Файл с макросом взят на просторах интернета.
Поскольку макрос делал не я, - доработками его я не занимаюсь, никаких гарантий работы дать не могу, по использованию не консультирую.
Комментарии
Супер! Спасибо огромное!
Благодарю, сам бы точно не додумался) Даже у майков на сайте есть подобные вопросы и на их сайте один из вариантов ссылает на http://samradapps.com/datepicker. Красивая обновленная версия.
Отдельное спасибо за исправление падежей в filldocuments. Теперь со склонением имен ошибку не замечал (бывает только со "слова+номер" непонимает как склонять.
Здравствуйте, Дмитрий.
Эта надстройка была сделана очень давно, во времена 32-битных версий Office, и несовместима с 64-битным Excel (который у вас)
Чтобы в 64-битном тоже работало, нужно вносить много изменений в код.
Поищите в интернетах доработанную версию этой надстройки.
Искать можно по фразе samradDatePicker 64 bit
а как изменить макрос на первый день недели "воскресенье"?
заранее благодарю!
Читайте также: