Учите матчасть light26, вы уже давно на форуме, чтобы так изумляться...
я сверху по пояс деревянный, поэтому мои попытки "учить матчасть" успехом не увенчались. я книгу читаю, наталкиваюсь на какой-то непонятный мне момент и все - я в тупике,-объяснить-то некому. на планете оставлял заявку на обучение, но его стоимость мне оказалась не по карману. а мне нужен "наставник".... так что vba пока мне не по зубам ((((
Quote (VovaK)
Учите матчасть light26, вы уже давно на форуме, чтобы так изумляться...
я сверху по пояс деревянный, поэтому мои попытки "учить матчасть" успехом не увенчались. я книгу читаю, наталкиваюсь на какой-то непонятный мне момент и все - я в тупике,-объяснить-то некому. на планете оставлял заявку на обучение, но его стоимость мне оказалась не по карману. а мне нужен "наставник".... так что vba пока мне не по зубам ((((light26
light26, самый лучший способ научиться - писать процедуры самому. Поставьте себе задачу и вперед. А на форуме и подскажут и поправят. А без практики цена учению - 0, толку что я когда то прошел продвинутое обучение формульного программирования в Excel, задачи сложные решал - без практики все забылось.
light26, самый лучший способ научиться - писать процедуры самому. Поставьте себе задачу и вперед. А на форуме и подскажут и поправят. А без практики цена учению - 0, толку что я когда то прошел продвинутое обучение формульного программирования в Excel, задачи сложные решал - без практики все забылось.VovaK
Всем удачи. У нас все получится. С уважением, Владимир.
Вова, ты бы свой последний пример (который в VovaK___mod3-2.zip) исправил: там ведь нифига не получится создавать выпадающее меню, т.к. макрос[vba]
Код
Sub CalendarMenuCreate() Dim cb As CommandBarControl Set cb = Application.CommandBars("Cell").Controls.Add(before:=1) With cb .FaceId = 1763 .Caption = "&Календарь" .OnAction = "!Start" .BeginGroup = True End With End Sub
[/vba]предписывает при нажатии на создаваемую кнопку меню выполнять отсутствующую процедуру
Да и для избежания дублирования кнопок календаря в выпадающем меню ячейки в случае какого-то сбоя лучше первым делом пытаться удалить ранее созданную, но почему-либо не удалённую кнопку "Календарь", вызвав процедуру CalendarMenuDelete, а уже потом создавать кнопочку.
И (уж до кучи ) посмотри, какой классный значок календаря получается при .FaceId = 125
Вова, ты бы свой последний пример (который в VovaK___mod3-2.zip) исправил: там ведь нифига не получится создавать выпадающее меню, т.к. макрос[vba]
Код
Sub CalendarMenuCreate() Dim cb As CommandBarControl Set cb = Application.CommandBars("Cell").Controls.Add(before:=1) With cb .FaceId = 1763 .Caption = "&Календарь" .OnAction = "!Start" .BeginGroup = True End With End Sub
[/vba]предписывает при нажатии на создаваемую кнопку меню выполнять отсутствующую процедуру
Да и для избежания дублирования кнопок календаря в выпадающем меню ячейки в случае какого-то сбоя лучше первым делом пытаться удалить ранее созданную, но почему-либо не удалённую кнопку "Календарь", вызвав процедуру CalendarMenuDelete, а уже потом создавать кнопочку.
И (уж до кучи ) посмотри, какой классный значок календаря получается при .FaceId = 125Alex_ST
Alex_ST, помилуй, я же выложил код только календаря, остальное хвосты. Я меню попробовал как выглядеть будет да залочил. А процедура Start всего три строки: Sub Start() DateForm.Show End Sub
Обрати внимание на комментарий топа в названии (Для программирующих в среде VBA.). Это же не готовый продукт а только фрагмент.
Alex_ST, помилуй, я же выложил код только календаря, остальное хвосты. Я меню попробовал как выглядеть будет да залочил. А процедура Start всего три строки: Sub Start() DateForm.Show End Sub
Обрати внимание на комментарий топа в названии (Для программирующих в среде VBA.). Это же не готовый продукт а только фрагмент.
light26, самый лучший способ научиться - писать процедуры самому. Поставьте себе задачу и вперед. А на форуме и подскажут и поправят. А без практики цена учению - 0, толку что я когда то прошел продвинутое обучение формульного программирования в Excel, задачи сложные решал - без практики все забылось. С уважением, Владимир.
Владимир, а что такое "формульное программирование в Excel" ? Это не ирония, если имелось в виду "формальное" - поисковики именно так переделывают эту фразу.
Quote (VovaK)
light26, самый лучший способ научиться - писать процедуры самому. Поставьте себе задачу и вперед. А на форуме и подскажут и поправят. А без практики цена учению - 0, толку что я когда то прошел продвинутое обучение формульного программирования в Excel, задачи сложные решал - без практики все забылось. С уважением, Владимир.
Владимир, а что такое "формульное программирование в Excel" ? Это не ирония, если имелось в виду "формальное" - поисковики именно так переделывают эту фразу.Гость из бу.
Гость из бу., можно написать вполне добротный проект формулами листа. Если бы была возможность переадресации значений в другие ячейки посредством формул, я наверное так и не узнал бы что такое VBA.
Гость из бу., можно написать вполне добротный проект формулами листа. Если бы была возможность переадресации значений в другие ячейки посредством формул, я наверное так и не узнал бы что такое VBA.VovaK
Всем удачи. У нас все получится. С уважением, Владимир.
Володя, я надеюсь, ты догадываешься, что код процедуры Start я смог написать и сам Просто, извини за занудство, но ветка форума называется Есть готовое решение, что подразумевает выкладывание в ней не "полена из которого можно выстругать Буратино", а самого "Буратино" или уж как минимум - ПОЛНОГО набора готовых деталей для его сборки и инструкции по сборке и дальнейшей эксплуатации Поэтому с твоей стороны было бы, наверное, правильно "дополировать" пример до такого состояния, чтобы даже не очень искушенный в программировании пользователь мог легко использовать твой вообще-то очень неплохой календарь.
К стати, я твой календарик немного подрихтовал "под себя" и положил к себе в закрома: - форме скролл-бар месяцев сделал горизонтальным, что, ИМХО, логичнее для листания - добавил кнопочку "Сегодня" с выводом на неё текущей даты и переходом на неё при нажатии - в коде поменял не рекомендуемые по всем учебникам из-за совпадения с именами стандартных функций имена переменных типа Day Year Month на более VBA-корректные - сократил местами код - только не доходят пока руки чтобы доделать так, чтобы при работе в немодальном режиме при выборе другой ячейки с датой календарь тоже перемещался на эту дату ... Вот вид того, что получилось: Но не выкладываю пример здесь из чисто этических соображений - ведь это всё-таки ТВОЙ календарь, значит тебе его и полировать.
Володя, я надеюсь, ты догадываешься, что код процедуры Start я смог написать и сам Просто, извини за занудство, но ветка форума называется Есть готовое решение, что подразумевает выкладывание в ней не "полена из которого можно выстругать Буратино", а самого "Буратино" или уж как минимум - ПОЛНОГО набора готовых деталей для его сборки и инструкции по сборке и дальнейшей эксплуатации Поэтому с твоей стороны было бы, наверное, правильно "дополировать" пример до такого состояния, чтобы даже не очень искушенный в программировании пользователь мог легко использовать твой вообще-то очень неплохой календарь.
К стати, я твой календарик немного подрихтовал "под себя" и положил к себе в закрома: - форме скролл-бар месяцев сделал горизонтальным, что, ИМХО, логичнее для листания - добавил кнопочку "Сегодня" с выводом на неё текущей даты и переходом на неё при нажатии - в коде поменял не рекомендуемые по всем учебникам из-за совпадения с именами стандартных функций имена переменных типа Day Year Month на более VBA-корректные - сократил местами код - только не доходят пока руки чтобы доделать так, чтобы при работе в немодальном режиме при выборе другой ячейки с датой календарь тоже перемещался на эту дату ... Вот вид того, что получилось: Но не выкладываю пример здесь из чисто этических соображений - ведь это всё-таки ТВОЙ календарь, значит тебе его и полировать.Alex_ST
Спасибо, Владимир! С календарем действительно все классно, главное что не зависит ни от каких библиотек и надстроек! Маленький вопросик: а как добавить в код форматирование ячейки? Хочется чтоб дата была в виде "1 января 1900 г."
Спасибо, Владимир! С календарем действительно все классно, главное что не зависит ни от каких библиотек и надстроек! Маленький вопросик: а как добавить в код форматирование ячейки? Хочется чтоб дата была в виде "1 января 1900 г."CTR
а как добавить в код форматирование ячейки? Хочется чтоб дата была в виде "1 января 1900 г."
а Вам не кажется, что формат ячеек задавать внутри календаря как раз не правильно? Ведь в разных ячейках и уж тем более в разных таблицах у разных пользователей желаемый формат отображения может быть разным. Поэтому, ИМХО, абсолютно правильно с точки зрения универсальности процедуры сделано так, что сначала нужно отформатировать ячейки под нравящееся сегодня и здесь отображение даты, а уж потом вводить в них даты "Календарём".
Quote (CTR)
а как добавить в код форматирование ячейки? Хочется чтоб дата была в виде "1 января 1900 г."
а Вам не кажется, что формат ячеек задавать внутри календаря как раз не правильно? Ведь в разных ячейках и уж тем более в разных таблицах у разных пользователей желаемый формат отображения может быть разным. Поэтому, ИМХО, абсолютно правильно с точки зрения универсальности процедуры сделано так, что сначала нужно отформатировать ячейки под нравящееся сегодня и здесь отображение даты, а уж потом вводить в них даты "Календарём".Alex_ST
Поэтому, ИМХО, абсолютно правильно с точки зрения универсальности процедуры сделано так, что сначала нужно отформатировать ячейки под нравящееся сегодня и здесь smile отображение даты
Дык я тока за! Только какой бы я формат не ставил, все равно выдается в виде 19.01.1900
Quote (Alex_ST)
Поэтому, ИМХО, абсолютно правильно с точки зрения универсальности процедуры сделано так, что сначала нужно отформатировать ячейки под нравящееся сегодня и здесь smile отображение даты
Дык я тока за! Только какой бы я формат не ставил, все равно выдается в виде 19.01.1900 CTR
Кстати, я твой календарик немного подрихтовал "под себя" и положил к себе в закрома: - форме скролл-бар месяцев сделал горизонтальным, что, ИМХО, логичнее для листания - добавил кнопочку "Сегодня" с выводом на неё текущей даты и переходом на неё при нажатии
Alex_ST, по-моему очень четко подмеченные доработки. Будите добры, поделитесь своей модификацией календаря Володи.
P.S. Единственное что на мой взгляд не к чему, так это выделение синим цветом того числа, над которым последним оказался курсор "мышки". Выделение синим цветом и "утапливание" числа во время нахождения курсора над ним - шикарно. Но после, по-моему, лучше бы смотрелось если все числа возвращались в исходное состояние. А выделялось лишь то число по которому "щелкнули" и отдельно выделялось цветом "сегодняшнее" число.
Quote (Alex_ST)
Кстати, я твой календарик немного подрихтовал "под себя" и положил к себе в закрома: - форме скролл-бар месяцев сделал горизонтальным, что, ИМХО, логичнее для листания - добавил кнопочку "Сегодня" с выводом на неё текущей даты и переходом на неё при нажатии
Alex_ST, по-моему очень четко подмеченные доработки. Будите добры, поделитесь своей модификацией календаря Володи.
P.S. Единственное что на мой взгляд не к чему, так это выделение синим цветом того числа, над которым последним оказался курсор "мышки". Выделение синим цветом и "утапливание" числа во время нахождения курсора над ним - шикарно. Но после, по-моему, лучше бы смотрелось если все числа возвращались в исходное состояние. А выделялось лишь то число по которому "щелкнули" и отдельно выделялось цветом "сегодняшнее" число.mr-butch
У меня код допиленного Володиного календаря на компе на работе. Если его автор, VovaK, не возражает, то я его здесь в понедельник выложу (вот только не закрутиться бы, не забыть...). Сразу предупреждаю: замечание CTR про формат ячейки я там не исправил. Только попробовал и убедился, что формат ячейки действительно насильно ставится ДД.ММ.ГГГГ, а в коде искать и исправлять руки тогда не дошли…
У меня код допиленного Володиного календаря на компе на работе. Если его автор, VovaK, не возражает, то я его здесь в понедельник выложу (вот только не закрутиться бы, не забыть...). Сразу предупреждаю: замечание CTR про формат ячейки я там не исправил. Только попробовал и убедился, что формат ячейки действительно насильно ставится ДД.ММ.ГГГГ, а в коде искать и исправлять руки тогда не дошли…Alex_ST
Раз Володя не возражает, то как обещал, выкладываю.
Предупреждаю сразу: немного недоработано: сделал немодальный вызов, но не могу разобраться, почему не удаётся передать форме значение ActiveCell.Value по событию Worksheet_SelectionChange если форма уже открыта (не скрыта)? Почему-то не происходит UserForm_Activate ???
Раз Володя не возражает, то как обещал, выкладываю.
Предупреждаю сразу: немного недоработано: сделал немодальный вызов, но не могу разобраться, почему не удаётся передать форме значение ActiveCell.Value по событию Worksheet_SelectionChange если форма уже открыта (не скрыта)? Почему-то не происходит UserForm_Activate ???Alex_ST
Календарь отличный, спасибо. вот только одна сложность: когда я делаю его в 2010 офисе, все работает отлично. если тот же уже сделанный документ открыть в 2007 екселе, мне выбивает ошибки в коде для формы. не подскажете как это исправить?
вот в какой строке ошибка:
Code
Dim ctl As Control
Календарь отличный, спасибо. вот только одна сложность: когда я делаю его в 2010 офисе, все работает отлично. если тот же уже сделанный документ открыть в 2007 екселе, мне выбивает ошибки в коде для формы. не подскажете как это исправить?
tengel, по Вашему посту понять причину ошибки трудно. Ни в каком модуле, ни в какой процедуре Вы не указали... Похоже, что не подключена какая-то библиотека. Посмотрите где MISSING в Tools-References… Ёксели стоят на одном компе или на разных?
tengel, по Вашему посту понять причину ошибки трудно. Ни в каком модуле, ни в какой процедуре Вы не указали... Похоже, что не подключена какая-то библиотека. Посмотрите где MISSING в Tools-References… Ёксели стоят на одном компе или на разных?Alex_ST