mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

ВНИМАНИЕ: Данная программа использует вызов системных функций - WinAPI
Поскольку синтаксис вызова этих функций в различных версиях Windows и Office может отличаться, работа программы на всех компьютерах не гарантируется!
Все размещённые на сайте макросы тестировались в Excel 2003 - 2010 под управлением 32-битной версии Windows XP

Если вы работаете в 64-битной версии Windows, или используете Office 2010 или 2013 (в котором встроена 7-я версия VBA),
то есть вероятность, что макрос работать не будет (потребуется доработка вызова функций WinAPI)
По указанным причинам, макрос не будет работать под управлением MacOS Excel 2004, 2008, 2011 и т.п.)

Выпадающий календарь в ячейке (выбор даты на листе Excel)

Выпадающий календарь в ячейке листа Excel

Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel.

Добавляет в контекстное меня ячеек пункт выбора даты, а при выделении ячеек, содержащих дату, справа от ячейки отображает значок календаря.

Поместите файл надстройки из вложения в папку автозагрузки Excel (C:\Program Files\Microsoft Office\OFFICExx\XLSTART).

В контекстном меню ячеек появляется новый пункт - "Выбрать дату из календаря".
Рядом с ячейками, в которые уже введена дата, будет отображаться маленький календарик, щелчок по которому вызовет большой календарь - для выбора даты.

Второй прикреплённый к статье файл - та же надстройка, только в которой неделя начинается с понедельника (в оригинале надстройки - с воскресенья)

Пароль на проект VBA - 1 (единица)

PS: Этот макрос написал не я (автор - samrad)
Файл с макросом взят на просторах интернета.
Поскольку макрос делал не я, - доработками его я не занимаюсь, никаких гарантий работы дать не могу, по использованию не консультирую.

ВложениеРазмерЗагрузкиПоследняя загрузка
Надстройка для выбора даты из календаря на листе Excel183.16 КБ432 года 40 недель назад
Исправленная надстройка (первый день недели - понедельник)165.6 КБ352 года 45 недель назад

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Ай, СПАСИБААА...

Спасибо тебе огромное!!!

дай бог тебе здоровья , добрый человек. Клевая штука, аж тащусь

Спасибо!!! наконец-то я нашла этот волшебный календарик!!! еще раз ОООООООООГРОМНОЕ СПАСИБО!!!!!

Крутая штука, спасибо!

Спасибо!!!!!

Спасибо

Игорь, а как поменять формат вставляемой даты, допустим хочу 20.12.14, а надстройка дает 20.12.2014?

Здравствуйте, классный календарик! только...
в книге с общим доступом не фурычит(не работает.)).
Можно ли как-то это исправить?

В обычном режиме и режиме разметки страницы надстройка работает, а в страничном (по моему самый удобный режим) - даже не появляется в контекстном меню. Это только у меня так? И если это можно побороть, то как? Спасибо!

Аналогично. Запустил надстройку, но дата не отображалась. Залез в редактор, полазил. Закрыл, перезапустил ексель - и все заработало. Чудеса программирования))))

Супер! Спасибо огромное! Очень удобно

Календарь не работает в объединенных ячейках! как исправить?

Проще переписать вам и выложить сюда, а то замучают с 64 битными системами, человек который не знаком с VBA сам это вряд ли сделает.

если у вас 64-битная Windows, - то не будет работать
(читайте комментарии к статье, - ниже написано, как это исправить, или где найти универсальную версию)

Просто не я этот скрипт писал (его автор - samrad)
А дорабатывать чужие скрипты, делая их универсальными, как-то нет особого желания.

А для 14 офиса данный скрипт работает? Что-то никак не получается, хотя на 7 установилось с первого раза

Не знаю, что у вас там катит, или не катит,
но в качестве пароля на проект VBA, цифра 1 подходит к обеим выложенным версиям надстройки
(только что проверил)

единичка не катит)

А вы попробуйте ВНИМАТЕЛЬНО прочитать статью (всего-то несколько предложений), - и, возможно, найдёте там пароль...

у меня VBA запаролен, и изменить под 64 разрядку не получается. какой пароль или как это можно сделать по другому
?

Надстройка работает в любой ячейке, необходимо вызвать контекстное меню (нажать правую клавишу мыши на требуемой ячейке), в появившемся списке кликнуть пункт "Выбрать из календаря"

Кто не хочет мучаться с этим календарем, я сделал простое решение.
На доп листе делаем список дат начиная с =СЕГОДНЯ() и вниз +1..
В нужно месте вставлем выпадающий список, источником данных для которого является этот столбик.

Если нужны будут даты до сегодняшнего дня, то просто меняем список.

Быстро и сердито.

Для работы этого файла в EXCEL 2010 в системе x64 нужно исправить код, а точнее добавить PtrSafe между Declare и
Function

Спасибо большое, искал такую штуку пол года

Здравствуйте Антон.
Отличная программа, а почему работает только в ячейках, в которые уже внесена дата?
Помойму, чаще небходимо вносить в ячейку дату, чем ее менять.
Можно сделать так, что бы календарик появлялся на любой ячейке с форматом дата?

Подскажите пожалуйста, почему "Исправленная надстройка (первый день недели - понедельник)" не работает в связке со скриптом записи всех изменений в книге на отдельный лист LOG.
Скрипт в txt выложил на sderni.ru/168193

Для этого надо в коде найти все WinAPI функции (их там 8 штук, в верхних строках модулей),
и переписать их, сделав универсальными
Как это сделать — написано здесь: http://excelvba.ru/articles/WinAPI

Например, вместо

Private Declare Function GetOSVersion Lib "Kernel32" Alias "GetVersionExA" _
                                      (lpVersionInformation As OSVERSIONINFO) As Long

написать

#If VBA7 Then    '  Office 2010
    Private Declare PtrSafe Function GetOSVersion Lib "Kernel32" Alias "GetVersionExA" _
                                          (lpVersionInformation As OSVERSIONINFO) As Long
#Else    '  Office 2003-2007
    Private Declare Function GetOSVersion Lib "Kernel32" Alias "GetVersionExA" _
                                          (lpVersionInformation As OSVERSIONINFO) As Long
#End If

И так для всех 8 функций

подскажите, как настроить для 64-битной системы

Сделал кто-нибудь такой вариант?
Хотелось бы чтобы иконка календарика показывалась всегда для определенного диапазона ячеек.

Просто добавьте кнопку "Выбор даты" в Normal.dotm (то есть это начиная с Word 2007).

Подскажите пожалуйста, где нужно подправить, чтобы иконка календарика появлялась если выделено больше одной ячейки?

Добрый вечер,
может кто дать готовую надстройку работающую во всех офисах и разной битности ОС.

За ранее спасибо

Могу предположить, что у вас стоит "Проверка данных" на эту ячейку, поэтому и не идёт. Попробуйте эту надстройку на новом файле, должно работать без проблем.

Здравствуйте. Запустил надстройку. Все работает. Только в той ячейке где вставлялась дата, потом не возможно записать уже слово или цифры. Excel ругается "Введенное значение не верно" "Набор значений которые могут быть введены в ячейку ограничен". Ставил в значениях ячейки и текст и числа все равно ругается. Как быть?

Есть ли готовое решение для использования этого календарика не на листе екселя, а на встроенных формах vba? Было бы здорово!

Да, можно.
Сделайте - вам за это даже спасибо скажут.

А можно сделать этот календарик не надстройкой а файликом экселя и запускать его через событие Private Sub Worksheet_SelectionChange(ByVal Target As Range)?

Спасибо, Антон! Помогло. Заработало. Только появился другой косяк. Раньше (в Office 2003 и Winx32) при выделении ячейки с форматом "Дата" справа показывалась иконка. Теперь, если ячейка пустая (формат "Дата"), иконка не появляется. Она появляется только в ячейке с уже вставленной датой и в следующей ячейке ниже. Как сделать, чтоб иконка появлялась во всех ячейках с форматом "Дата"?

Для работы надстройки календаря на Office 2010 x64 необходимо в код всех модулей после Declare вставить PtrSafe. Затем прогнать код на ошибки - нажать F5, сохранить все изменения в надстройке, и произвести цикл закрытия/открытия рабочей книги Excel.

А возможно ли в данной надстройке поменять цвет шрифта/заливки (например на красный) дней определенных дат, либо регулярных дней недели? Речь конечно же идет о праздниках и выходных. И какие изменения необходимо внести в код в связи с этим?

Предполагаю что речь идет о формате отображения дней, месяцев или лет, от даты на календаре. Меняя формат например на "дней", видно сколько осталось дней от даты на календаре до даты под "мышкой", ну и в других случаях соответственно. На формат ячейки это никак не влияет.

Насколько мне известно, вариант отображения даты зависит от формата ячейки (на ячейке правой кнопкой, "Формат ячеек" вкладка "Число" "Дата" либо из "(все форматы)" выбрать нужный, при желании отредактировав). Календарь ни при чём.
Отличный календарь, жаль, что не выходит у меня настроить его на х64...
Куда вот это вставить?
If Win64 Then
Declare Function MyMathFunc Lib "User32" (ByVal N As LongLong) As LongLong
Else
Declare Function MyMathFunc Lib "User32" (ByVal N As Long) As Long
If

что такое дисплей формат (внизу файла). Связано это как то с изменением формата даты и если да, то как это работает (дата вставляется в одном и том же формате)

круть!

Не разобрался, что и где добавить в 64х версии 2010 офиса. Может, кто понял и поделится? Буду признателен

Ага, разобрался, работает и в десятом офисе.

Windows 7 Enterprise SP1 EN x84, Office 2010 Pro x32, - календарь работает нормально и на защищенных листах.(без иконки, я её отключил)

Спасибо, в 2003 Excele у меня этот календарь (по ссылке с другого сайта) на заблокированных листах работает частично. С кнопки Date Picker на панели открывается календарь, но рядом с ячейкой иконка не появляется. В 2010 вообще не заработал, хотя версия с этого сайта работала, но как-то криво.

Смотри тут

Что можно исправить в коде чтобы работало на защищенном листе в разблокированных ячейках?

А с чего вы взяли, что иконка берется не с диска?

Макрос DisplayIcon рисует прямоугольник возле ячейки, и выполняет заливку этой фигуры картинкой из файла

oShape.Fill.UserPicture sPathToIcon
А файл этот предварительно создаётся макросом CreateIconFile.
Сам графический файл побайтово формируется в процедуре WriteIcon, и записывается на жесткий диск.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
   ___   __   __         ____            __  __ 
/ _ \ \ \ / / ___ | __ ) _ __ | \/ |
| (_) | \ V / / __| | _ \ | '_ \ | |\/| |
\__, | | | | (__ | |_) | | | | | | | | |
/_/ |_| \___| |____/ |_| |_| |_| |_|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.