В календаре реализован немодальный режим работы формы. На вкладке настроек можно задать режимы работы календаря: ввод в ActiveCell по двойному или одинарному клику, и скрывать или нет календарь после ввода.
В немодальном режиме календарь принимает даты активируемых ячеек. Если в ячейках не дата - значение календаря = СЕГОДНЯ. Можно перейти с любой даты на СЕГОДНЯ (есть кнопочка для этого) Можно задавать месяц из списка, год - кнопками +/- или ручным вводом в текст-бокс (защита от некорректного ввода реализована) При двойном клике по ячейке, содержащей дату, календарь открывается автоматически.
Можно оформить календарь как надстройку. Тогда в меню ячейки будет добавлен пункт вызова календаря. Для оформления в виде надстройки необходимо в модуле JP_Сalendar_Module снять комментарии со строки Call CalendarMenuCreate в процедуре Sub Auto_Open и со строки Call CalendarMenuDelete в процедуре Sub Auto_Close
В календаре реализован немодальный режим работы формы. На вкладке настроек можно задать режимы работы календаря: ввод в ActiveCell по двойному или одинарному клику, и скрывать или нет календарь после ввода.
В немодальном режиме календарь принимает даты активируемых ячеек. Если в ячейках не дата - значение календаря = СЕГОДНЯ. Можно перейти с любой даты на СЕГОДНЯ (есть кнопочка для этого) Можно задавать месяц из списка, год - кнопками +/- или ручным вводом в текст-бокс (защита от некорректного ввода реализована) При двойном клике по ячейке, содержащей дату, календарь открывается автоматически.
Можно оформить календарь как надстройку. Тогда в меню ячейки будет добавлен пункт вызова календаря. Для оформления в виде надстройки необходимо в модуле JP_Сalendar_Module снять комментарии со строки Call CalendarMenuCreate в процедуре Sub Auto_Open и со строки Call CalendarMenuDelete в процедуре Sub Auto_CloseAlex_ST
Всем доброго времени суток! Подскажите пожалуйста чайнику, что и куда надо запихать чтобы этот календарик заработал? Надо на одном листе в 5-6 разных местах(ячейках) вставлять дату, через такой календарик это делать будет гораздо приятней). Добавлю, что предпринимал перед тем как написать сюда: Открыл файл с календарём в excel, через alt+F11 вошёл в VBA, скопировал в свой VBAProject модуль JP_Calendar_module, а также форму JP_Calendar_Frm. После этого в моём файле всё заработало. Однако, как только я закрыл оба файла (конечно сохранил ), и снова открыл свой файл, уже ничего не работало Видел и на этом, и на альтернативном форуме ещё как минимум 2 варианта подобных календарей, однако этот понравился больше других. Буду признателен за помощь
Всем доброго времени суток! Подскажите пожалуйста чайнику, что и куда надо запихать чтобы этот календарик заработал? Надо на одном листе в 5-6 разных местах(ячейках) вставлять дату, через такой календарик это делать будет гораздо приятней). Добавлю, что предпринимал перед тем как написать сюда: Открыл файл с календарём в excel, через alt+F11 вошёл в VBA, скопировал в свой VBAProject модуль JP_Calendar_module, а также форму JP_Calendar_Frm. После этого в моём файле всё заработало. Однако, как только я закрыл оба файла (конечно сохранил ), и снова открыл свой файл, уже ничего не работало Видел и на этом, и на альтернативном форуме ещё как минимум 2 варианта подобных календарей, однако этот понравился больше других. Буду признателен за помощь futher
это код который в ThisWbk был, то - да, перенёс. там, в исходнике, есть ещё "Лист 1 (Лист1)" в нём правда одна строка всего: Option Explicit На всякий случай перенёс и её на свой лист - Результат тот же (отрицательный)
PS: В исходном файле макрос календаря запускается при нажатии на кнопку, и после этого становится активен в ячейках с датами. Более того, он становится активен и в моём файле! И активен до тех пор пока открыт исходный файл... Мне кнопка не нужна, достаточно даблклика на нужные ячейки.
это код который в ThisWbk был, то - да, перенёс. там, в исходнике, есть ещё "Лист 1 (Лист1)" в нём правда одна строка всего: Option Explicit На всякий случай перенёс и её на свой лист - Результат тот же (отрицательный)
PS: В исходном файле макрос календаря запускается при нажатии на кнопку, и после этого становится активен в ячейках с датами. Более того, он становится активен и в моём файле! И активен до тех пор пока открыт исходный файл... Мне кнопка не нужна, достаточно даблклика на нужные ячейки.futher
Сообщение отредактировал futher - Пятница, 04.10.2013, 18:57
В своей новой книге в модуле книги встаньте на последнюю строку [vba]
Код
Sub Reload_Appl(): Set Appl = Application: End Sub
[/vba] в любое место между Sub и End Sub и нажмите F5 Потом введите в любую ячейку дату, Ентер, и 2 раза топните мышой на ячейку с датой. Если захотите
Можно оформить календарь как надстройку. Тогда в меню ячейки будет добавлен пункт вызова календаря. Для оформления в виде надстройки необходимо в модуле JP_Сalendar_Module снять комментарии со строки Call CalendarMenuCreate в процедуре Sub Auto_Open и со строки Call CalendarMenuDelete в процедуре Sub Auto_Close
Еще нужно в JP_Сalendar_Module в процедуре JP_Calendar заменить ThisWbk на ThisWorkbook.
Добавлено. А если нужно засунуть всю эту красоту в другую книгу, то нужно сделать все, что нужно для надстройки и вот тут, как раз, и нужно переименовать Wbk. А если просто надстройку делать из родного файла, то, как совершенно верно ниже заметил Алексей, переименования не требуется.
В своей новой книге в модуле книги встаньте на последнюю строку [vba]
Код
Sub Reload_Appl(): Set Appl = Application: End Sub
[/vba] в любое место между Sub и End Sub и нажмите F5 Потом введите в любую ячейку дату, Ентер, и 2 раза топните мышой на ячейку с датой. Если захотите
Можно оформить календарь как надстройку. Тогда в меню ячейки будет добавлен пункт вызова календаря. Для оформления в виде надстройки необходимо в модуле JP_Сalendar_Module снять комментарии со строки Call CalendarMenuCreate в процедуре Sub Auto_Open и со строки Call CalendarMenuDelete в процедуре Sub Auto_Close
Еще нужно в JP_Сalendar_Module в процедуре JP_Calendar заменить ThisWbk на ThisWorkbook.
Добавлено. А если нужно засунуть всю эту красоту в другую книгу, то нужно сделать все, что нужно для надстройки и вот тут, как раз, и нужно переименовать Wbk. А если просто надстройку делать из родного файла, то, как совершенно верно ниже заметил Алексей, переименования не требуется._Boroda_
еще нужно в JP_Сalendar_Module в процедуре JP_Calendar заменить ThisWbk на ThisWorkbook.
Саш, спасибо за ответ (у меня запарка, а ты ответил). Честно говоря, я абсолютно не помню, зачем я переименовал модуль ЭтаКнига в ThisWbk Но разве если МОЙ файл с МОИМ именем модуля книги решить оформить в виде надстройки, то что-то надо переименовывать? Ведь в коде записано обращение к МОЕМУ модулю книги по МНОЮ заданному имени.
еще нужно в JP_Сalendar_Module в процедуре JP_Calendar заменить ThisWbk на ThisWorkbook.
Саш, спасибо за ответ (у меня запарка, а ты ответил). Честно говоря, я абсолютно не помню, зачем я переименовал модуль ЭтаКнига в ThisWbk Но разве если МОЙ файл с МОИМ именем модуля книги решить оформить в виде надстройки, то что-то надо переименовывать? Ведь в коде записано обращение к МОЕМУ модулю книги по МНОЮ заданному имени.Alex_ST
Вроде работает, но всё равно только после запуска макроса "вручную". Как сделать чтобы макрос сам активизировался после даблклика на ячейку с датой?futher
futher, ну зачем засорять Готовое решение своими вопросами? Для этого есть "Вопросы по VBA". A завтра появится кто-то, кому нужно активизировать по правому клику. И что от готового решения останется?
futher, ну зачем засорять Готовое решение своими вопросами? Для этого есть "Вопросы по VBA". A завтра появится кто-то, кому нужно активизировать по правому клику. И что от готового решения останется?RAN
По готовому. Понадобилось как-то нарисовать календарь на листе. Вручную оказалось скучно и грустно. Добавил на календарь кнопочку для автоматизации процесса.
По готовому. Понадобилось как-то нарисовать календарь на листе. Вручную оказалось скучно и грустно. Добавил на календарь кнопочку для автоматизации процесса.RAN
Леш, извини, ежели чего не так. Я немного поторопился в предыдущем ответе - переименовать нужно не для преобразования в надстройку, а для включения календаря в другую книгу, без участия твоего файла. Переписал там свой пост.
Леш, извини, ежели чего не так. Я немного поторопился в предыдущем ответе - переименовать нужно не для преобразования в надстройку, а для включения календаря в другую книгу, без участия твоего файла. Переписал там свой пост._Boroda_
А ведь и верно: забыл в Auto_Open вставить Call ThisWbk.Reload_Appl Но у меня почему-то и так работало. Спасибо, Андрей, за поправку. Может, и в самом деле будет лучше работать.
А ведь и верно: забыл в Auto_Open вставить Call ThisWbk.Reload_Appl Но у меня почему-то и так работало. Спасибо, Андрей, за поправку. Может, и в самом деле будет лучше работать.Alex_ST
Добрый день, Уважаемые! Я прошу прощения. Облазил весь скрипт и не смог найти, как установить чек боксы "двойного нажатия" и "автозакрытия после ввода данных" по умолчанию в состояние (True).
так же устанавливал сами чек боксы на графической форме в состояние: Value = True
итог - не получилось. Подскажите где искать решение?
С Уважением,
Евгений
Добрый день, Уважаемые! Я прошу прощения. Облазил весь скрипт и не смог найти, как установить чек боксы "двойного нажатия" и "автозакрытия после ввода данных" по умолчанию в состояние (True).
это только Вам известно, т.к. в моём коде переменных с такими названиями нет, а есть только элементы управления с такими именами. Вот Вы и присваиваете одному и тому же элементу массива поочерёдно значения не установленных элементов управления, а потом эти элементы по значениям массива устанавливает программа инициализации формы... Замкнутый круг получается. Читайте внимательно комментарии. Там всё написано предельно ясно. Включайте мозги.
А в модуле JP_Сalendar_Module не смотрели? Там же даже с комментариями написано:[vba]
Код
Sub Auto_Open() arrFrmSetup = Array(True, False) ' начальная установка чек-боксов календаря _ arrFrmSetup(0) = True => "Ввод двойным щелчком" _ arrFrmSetup(1) = False >= "Не прятать после ввода" Call ThisWbk.Reload_Appl ' Call CalendarMenuCreate End Sub
[/vba]уж куда может быть более подробный комментарий? А что Вы хотели сказать загадочными выражениями
это только Вам известно, т.к. в моём коде переменных с такими названиями нет, а есть только элементы управления с такими именами. Вот Вы и присваиваете одному и тому же элементу массива поочерёдно значения не установленных элементов управления, а потом эти элементы по значениям массива устанавливает программа инициализации формы... Замкнутый круг получается. Читайте внимательно комментарии. Там всё написано предельно ясно. Включайте мозги.Alex_ST