Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выпадающий календарь - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 8
  • «
  • 1
  • 2
  • 3
  • 4
  • 7
  • 8
  • »
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Выпадающий календарь (Для программирующих в среде VBA.)
Выпадающий календарь
light26 Дата: Среда, 10.08.2011, 16:27 | Сообщение № 21
Группа: Друзья
Ранг: Старожил
Сообщений: 1346
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (VovaK)
Учите матчасть light26, вы уже давно на форуме, чтобы так изумляться...

я сверху по пояс деревянный, поэтому мои попытки "учить матчасть" успехом не увенчались.
я книгу читаю, наталкиваюсь на какой-то непонятный мне момент и все - я в тупике,-объяснить-то некому.
на планете оставлял заявку на обучение, но его стоимость мне оказалась не по карману. а мне нужен "наставник".... так что vba пока мне не по зубам ((((


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (VovaK)
Учите матчасть light26, вы уже давно на форуме, чтобы так изумляться...

я сверху по пояс деревянный, поэтому мои попытки "учить матчасть" успехом не увенчались.
я книгу читаю, наталкиваюсь на какой-то непонятный мне момент и все - я в тупике,-объяснить-то некому.
на планете оставлял заявку на обучение, но его стоимость мне оказалась не по карману. а мне нужен "наставник".... так что vba пока мне не по зубам ((((

Автор - light26
Дата добавления - 10.08.2011 в 16:27
VovaK Дата: Среда, 10.08.2011, 20:48 | Сообщение № 22
Группа: Друзья
Ранг: Форумчанин
Сообщений: 116
Репутация: 41 ±
Замечаний: 0% ±

10
light26, самый лучший способ научиться - писать процедуры самому. Поставьте себе задачу и вперед. А на форуме и подскажут и поправят. А без практики цена учению - 0, толку что я когда то прошел продвинутое обучение формульного программирования в Excel, задачи сложные решал - без практики все забылось.


Всем удачи. У нас все получится.
С уважением, Владимир.
 
Ответить
Сообщениеlight26, самый лучший способ научиться - писать процедуры самому. Поставьте себе задачу и вперед. А на форуме и подскажут и поправят. А без практики цена учению - 0, толку что я когда то прошел продвинутое обучение формульного программирования в Excel, задачи сложные решал - без практики все забылось.

Автор - VovaK
Дата добавления - 10.08.2011 в 20:48
Alex_ST Дата: Четверг, 11.08.2011, 09:12 | Сообщение № 23
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Вова, ты бы свой последний пример (который в 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]предписывает при нажатии на создаваемую кнопку меню выполнять отсутствующую процедуру tongue

Да и для избежания дублирования кнопок календаря в выпадающем меню ячейки в случае какого-то сбоя лучше первым делом пытаться удалить ранее созданную, но почему-либо не удалённую кнопку "Календарь", вызвав процедуру CalendarMenuDelete, а уже потом создавать кнопочку.

И (уж до кучи biggrin ) посмотри, какой классный значок календаря получается при .FaceId = 125



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеВова, ты бы свой последний пример (который в 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]предписывает при нажатии на создаваемую кнопку меню выполнять отсутствующую процедуру tongue

Да и для избежания дублирования кнопок календаря в выпадающем меню ячейки в случае какого-то сбоя лучше первым делом пытаться удалить ранее созданную, но почему-либо не удалённую кнопку "Календарь", вызвав процедуру CalendarMenuDelete, а уже потом создавать кнопочку.

И (уж до кучи biggrin ) посмотри, какой классный значок календаря получается при .FaceId = 125

Автор - Alex_ST
Дата добавления - 11.08.2011 в 09:12
VovaK Дата: Четверг, 11.08.2011, 11:50 | Сообщение № 24
Группа: Друзья
Ранг: Форумчанин
Сообщений: 116
Репутация: 41 ±
Замечаний: 0% ±

10
Alex_ST, помилуй, я же выложил код только календаря, остальное хвосты. Я меню попробовал как выглядеть будет да залочил. А процедура Start всего три строки:
Sub Start()
DateForm.Show
End Sub

Обрати внимание на комментарий топа в названии (Для программирующих в среде VBA.). Это же не готовый продукт а только фрагмент.

Алекс, сюда ткни http://www.planetaexcel.ru/forum.php?thread_id=28983


Всем удачи. У нас все получится.
С уважением, Владимир.


Сообщение отредактировал VovaK - Четверг, 11.08.2011, 11:51
 
Ответить
СообщениеAlex_ST, помилуй, я же выложил код только календаря, остальное хвосты. Я меню попробовал как выглядеть будет да залочил. А процедура Start всего три строки:
Sub Start()
DateForm.Show
End Sub

Обрати внимание на комментарий топа в названии (Для программирующих в среде VBA.). Это же не готовый продукт а только фрагмент.

Алекс, сюда ткни http://www.planetaexcel.ru/forum.php?thread_id=28983

Автор - VovaK
Дата добавления - 11.08.2011 в 11:50
Гость из бу. Дата: Четверг, 11.08.2011, 19:17 | Сообщение № 25
Группа: Гости
Quote (VovaK)
light26, самый лучший способ научиться - писать процедуры самому. Поставьте себе задачу и вперед. А на форуме и подскажут и поправят. А без практики цена учению - 0, толку что я когда то прошел продвинутое обучение формульного программирования в Excel, задачи сложные решал - без практики все забылось.
С уважением, Владимир.

Владимир, а что такое "формульное программирование в Excel" ? Это не ирония, если имелось в виду "формальное" - поисковики именно так переделывают эту фразу.
 
Ответить
Сообщение
Quote (VovaK)
light26, самый лучший способ научиться - писать процедуры самому. Поставьте себе задачу и вперед. А на форуме и подскажут и поправят. А без практики цена учению - 0, толку что я когда то прошел продвинутое обучение формульного программирования в Excel, задачи сложные решал - без практики все забылось.
С уважением, Владимир.

Владимир, а что такое "формульное программирование в Excel" ? Это не ирония, если имелось в виду "формальное" - поисковики именно так переделывают эту фразу.

Автор - Гость из бу.
Дата добавления - 11.08.2011 в 19:17
VovaK Дата: Четверг, 11.08.2011, 20:37 | Сообщение № 26
Группа: Друзья
Ранг: Форумчанин
Сообщений: 116
Репутация: 41 ±
Замечаний: 0% ±

10
Гость из бу., можно написать вполне добротный проект формулами листа. Если бы была возможность переадресации значений в другие ячейки посредством формул, я наверное так и не узнал бы что такое VBA.


Всем удачи. У нас все получится.
С уважением, Владимир.
 
Ответить
СообщениеГость из бу., можно написать вполне добротный проект формулами листа. Если бы была возможность переадресации значений в другие ячейки посредством формул, я наверное так и не узнал бы что такое VBA.

Автор - VovaK
Дата добавления - 11.08.2011 в 20:37
Гость Дата: Четверг, 11.08.2011, 22:02 | Сообщение № 27
Группа: Гости
Вот как должна выглядеть процедура на клик мыша в модуле класса DateClass:
// Большое спасибо. Разобрался.
 
Ответить
СообщениеВот как должна выглядеть процедура на клик мыша в модуле класса DateClass:
// Большое спасибо. Разобрался.

Автор - Гость
Дата добавления - 11.08.2011 в 22:02
Гость из бу. Дата: Четверг, 11.08.2011, 22:30 | Сообщение № 28
Группа: Гости
Выше пост не мой.
Владимир, спасибо, понял.
 
Ответить
СообщениеВыше пост не мой.
Владимир, спасибо, понял.

Автор - Гость из бу.
Дата добавления - 11.08.2011 в 22:30
Alex_ST Дата: Пятница, 12.08.2011, 09:36 | Сообщение № 29
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Володя, я надеюсь, ты догадываешься, что код процедуры Start я смог написать и сам biggrin
Просто, извини за занудство, но ветка форума называется Есть готовое решение, что подразумевает выкладывание в ней не "полена из которого можно выстругать Буратино", а самого "Буратино" или уж как минимум - ПОЛНОГО набора готовых деталей для его сборки и инструкции по сборке и дальнейшей эксплуатации biggrin
Поэтому с твоей стороны было бы, наверное, правильно "дополировать" пример до такого состояния, чтобы даже не очень искушенный в программировании пользователь мог легко использовать твой вообще-то очень неплохой календарь.

К стати, я твой календарик немного подрихтовал "под себя" и положил к себе в закрома:
- форме скролл-бар месяцев сделал горизонтальным, что, ИМХО, логичнее для листания
- добавил кнопочку "Сегодня" с выводом на неё текущей даты и переходом на неё при нажатии
- в коде поменял не рекомендуемые по всем учебникам из-за совпадения с именами стандартных функций имена переменных типа Day Year Month на более VBA-корректные
- сократил местами код
- только не доходят пока руки чтобы доделать так, чтобы при работе в немодальном режиме при выборе другой ячейки с датой календарь тоже перемещался на эту дату ...
Вот вид того, что получилось:
Но не выкладываю пример здесь из чисто этических соображений - ведь это всё-таки ТВОЙ календарь, значит тебе его и полировать.
К сообщению приложен файл: 9594003.jpg (21.9 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Пятница, 12.08.2011, 09:39
 
Ответить
СообщениеВолодя, я надеюсь, ты догадываешься, что код процедуры Start я смог написать и сам biggrin
Просто, извини за занудство, но ветка форума называется Есть готовое решение, что подразумевает выкладывание в ней не "полена из которого можно выстругать Буратино", а самого "Буратино" или уж как минимум - ПОЛНОГО набора готовых деталей для его сборки и инструкции по сборке и дальнейшей эксплуатации biggrin
Поэтому с твоей стороны было бы, наверное, правильно "дополировать" пример до такого состояния, чтобы даже не очень искушенный в программировании пользователь мог легко использовать твой вообще-то очень неплохой календарь.

К стати, я твой календарик немного подрихтовал "под себя" и положил к себе в закрома:
- форме скролл-бар месяцев сделал горизонтальным, что, ИМХО, логичнее для листания
- добавил кнопочку "Сегодня" с выводом на неё текущей даты и переходом на неё при нажатии
- в коде поменял не рекомендуемые по всем учебникам из-за совпадения с именами стандартных функций имена переменных типа Day Year Month на более VBA-корректные
- сократил местами код
- только не доходят пока руки чтобы доделать так, чтобы при работе в немодальном режиме при выборе другой ячейки с датой календарь тоже перемещался на эту дату ...
Вот вид того, что получилось:
Но не выкладываю пример здесь из чисто этических соображений - ведь это всё-таки ТВОЙ календарь, значит тебе его и полировать.

Автор - Alex_ST
Дата добавления - 12.08.2011 в 09:36
Alex_ST Дата: Пятница, 12.08.2011, 10:06 | Сообщение № 30
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Quote (VovaK)

Спасибо, Володя, посмотрел. Очень интересно получилось. Отпишусь там.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Quote (VovaK)

Спасибо, Володя, посмотрел. Очень интересно получилось. Отпишусь там.

Автор - Alex_ST
Дата добавления - 12.08.2011 в 10:06
Ильнур Дата: Пятница, 23.09.2011, 10:13 | Сообщение № 31
Группа: Гости
Молодец Володя! Очень хороший календарь! smile
 
Ответить
СообщениеМолодец Володя! Очень хороший календарь! smile

Автор - Ильнур
Дата добавления - 23.09.2011 в 10:13
CTR Дата: Четверг, 26.01.2012, 11:42 | Сообщение № 32
Группа: Гости
Спасибо, Владимир! С календарем действительно все классно, главное что не зависит ни от каких библиотек и надстроек! biggrin
Маленький вопросик: а как добавить в код форматирование ячейки? Хочется чтоб дата была в виде "1 января 1900 г."
 
Ответить
СообщениеСпасибо, Владимир! С календарем действительно все классно, главное что не зависит ни от каких библиотек и надстроек! biggrin
Маленький вопросик: а как добавить в код форматирование ячейки? Хочется чтоб дата была в виде "1 января 1900 г."

Автор - CTR
Дата добавления - 26.01.2012 в 11:42
Alex_ST Дата: Четверг, 26.01.2012, 12:25 | Сообщение № 33
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Quote (CTR)
а как добавить в код форматирование ячейки? Хочется чтоб дата была в виде "1 января 1900 г."

а Вам не кажется, что формат ячеек задавать внутри календаря как раз не правильно? Ведь в разных ячейках и уж тем более в разных таблицах у разных пользователей желаемый формат отображения может быть разным.
Поэтому, ИМХО, абсолютно правильно с точки зрения универсальности процедуры сделано так, что сначала нужно отформатировать ячейки под нравящееся сегодня и здесь smile отображение даты, а уж потом вводить в них даты "Календарём".



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Quote (CTR)
а как добавить в код форматирование ячейки? Хочется чтоб дата была в виде "1 января 1900 г."

а Вам не кажется, что формат ячеек задавать внутри календаря как раз не правильно? Ведь в разных ячейках и уж тем более в разных таблицах у разных пользователей желаемый формат отображения может быть разным.
Поэтому, ИМХО, абсолютно правильно с точки зрения универсальности процедуры сделано так, что сначала нужно отформатировать ячейки под нравящееся сегодня и здесь smile отображение даты, а уж потом вводить в них даты "Календарём".

Автор - Alex_ST
Дата добавления - 26.01.2012 в 12:25
CTR Дата: Четверг, 26.01.2012, 13:58 | Сообщение № 34
Группа: Гости
Quote (Alex_ST)
Поэтому, ИМХО, абсолютно правильно с точки зрения универсальности процедуры сделано так, что сначала нужно отформатировать ячейки под нравящееся сегодня и здесь smile отображение даты


Дык я тока за! Только какой бы я формат не ставил, все равно выдается в виде 19.01.1900 cry
 
Ответить
Сообщение
Quote (Alex_ST)
Поэтому, ИМХО, абсолютно правильно с точки зрения универсальности процедуры сделано так, что сначала нужно отформатировать ячейки под нравящееся сегодня и здесь smile отображение даты


Дык я тока за! Только какой бы я формат не ставил, все равно выдается в виде 19.01.1900 cry

Автор - CTR
Дата добавления - 26.01.2012 в 13:58
GWolf Дата: Четверг, 26.01.2012, 20:14 | Сообщение № 35
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 3 ±
Замечаний: 0% ±

Quote (light26)
а мне нужен "наставник".... так что vba пока мне не по зубам

light26,

Если не стеб, то создавайте тему, а я постараюсь помочь.


Путей к вершине множество. Этот один из многих...
 
Ответить
Сообщение
Quote (light26)
а мне нужен "наставник".... так что vba пока мне не по зубам

light26,

Если не стеб, то создавайте тему, а я постараюсь помочь.

Автор - GWolf
Дата добавления - 26.01.2012 в 20:14
mr-butch Дата: Пятница, 10.02.2012, 22:49 | Сообщение № 36
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Quote (Alex_ST)
Кстати, я твой календарик немного подрихтовал "под себя" и положил к себе в закрома:
- форме скролл-бар месяцев сделал горизонтальным, что, ИМХО, логичнее для листания
- добавил кнопочку "Сегодня" с выводом на неё текущей даты и переходом на неё при нажатии


Alex_ST,
по-моему очень четко подмеченные доработки. Будите добры, поделитесь своей модификацией календаря Володи.

P.S. Единственное что на мой взгляд не к чему, так это выделение синим цветом того числа, над которым последним оказался курсор "мышки". Выделение синим цветом и "утапливание" числа во время нахождения курсора над ним - шикарно. Но после, по-моему, лучше бы смотрелось если все числа возвращались в исходное состояние. А выделялось лишь то число по которому "щелкнули" и отдельно выделялось цветом "сегодняшнее" число.
 
Ответить
Сообщение
Quote (Alex_ST)
Кстати, я твой календарик немного подрихтовал "под себя" и положил к себе в закрома:
- форме скролл-бар месяцев сделал горизонтальным, что, ИМХО, логичнее для листания
- добавил кнопочку "Сегодня" с выводом на неё текущей даты и переходом на неё при нажатии


Alex_ST,
по-моему очень четко подмеченные доработки. Будите добры, поделитесь своей модификацией календаря Володи.

P.S. Единственное что на мой взгляд не к чему, так это выделение синим цветом того числа, над которым последним оказался курсор "мышки". Выделение синим цветом и "утапливание" числа во время нахождения курсора над ним - шикарно. Но после, по-моему, лучше бы смотрелось если все числа возвращались в исходное состояние. А выделялось лишь то число по которому "щелкнули" и отдельно выделялось цветом "сегодняшнее" число.

Автор - mr-butch
Дата добавления - 10.02.2012 в 22:49
Alex_ST Дата: Суббота, 11.02.2012, 20:07 | Сообщение № 37
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
У меня код допиленного Володиного календаря на компе на работе.
Если его автор, VovaK, не возражает, то я его здесь в понедельник выложу (вот только не закрутиться бы, не забыть...).
Сразу предупреждаю: замечание CTR про формат ячейки я там не исправил. Только попробовал и убедился, что формат ячейки действительно насильно ставится ДД.ММ.ГГГГ, а в коде искать и исправлять руки тогда не дошли…



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеУ меня код допиленного Володиного календаря на компе на работе.
Если его автор, VovaK, не возражает, то я его здесь в понедельник выложу (вот только не закрутиться бы, не забыть...).
Сразу предупреждаю: замечание CTR про формат ячейки я там не исправил. Только попробовал и убедился, что формат ячейки действительно насильно ставится ДД.ММ.ГГГГ, а в коде искать и исправлять руки тогда не дошли…

Автор - Alex_ST
Дата добавления - 11.02.2012 в 20:07
Alex_ST Дата: Понедельник, 13.02.2012, 14:26 | Сообщение № 38
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Раз Володя не возражает, то как обещал, выкладываю.

Предупреждаю сразу: немного недоработано: сделал немодальный вызов, но не могу разобраться, почему не удаётся передать форме значение ActiveCell.Value по событию Worksheet_SelectionChange если форма уже открыта (не скрыта)? Почему-то не происходит UserForm_Activate ???
К сообщению приложен файл: __VovaK_mod2_Al.xls (99.5 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеРаз Володя не возражает, то как обещал, выкладываю.

Предупреждаю сразу: немного недоработано: сделал немодальный вызов, но не могу разобраться, почему не удаётся передать форме значение ActiveCell.Value по событию Worksheet_SelectionChange если форма уже открыта (не скрыта)? Почему-то не происходит UserForm_Activate ???

Автор - Alex_ST
Дата добавления - 13.02.2012 в 14:26
tengel Дата: Четверг, 21.06.2012, 12:53 | Сообщение № 39
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Календарь отличный, спасибо. вот только одна сложность: когда я делаю его в 2010 офисе, все работает отлично. если тот же уже сделанный документ открыть в 2007 екселе, мне выбивает ошибки в коде для формы. не подскажете как это исправить?

вот в какой строке ошибка:
Code
Dim ctl As Control
 
Ответить
СообщениеКалендарь отличный, спасибо. вот только одна сложность: когда я делаю его в 2010 офисе, все работает отлично. если тот же уже сделанный документ открыть в 2007 екселе, мне выбивает ошибки в коде для формы. не подскажете как это исправить?

вот в какой строке ошибка:
Code
Dim ctl As Control

Автор - tengel
Дата добавления - 21.06.2012 в 12:53
Alex_ST Дата: Пятница, 22.06.2012, 15:49 | Сообщение № 40
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
tengel,
по Вашему посту понять причину ошибки трудно.
Ни в каком модуле, ни в какой процедуре Вы не указали...
Похоже, что не подключена какая-то библиотека.
Посмотрите где MISSING в Tools-References…

Ёксели стоят на одном компе или на разных?
К сообщению приложен файл: 1975631.jpg (91.9 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Пятница, 22.06.2012, 15:52
 
Ответить
Сообщениеtengel,
по Вашему посту понять причину ошибки трудно.
Ни в каком модуле, ни в какой процедуре Вы не указали...
Похоже, что не подключена какая-то библиотека.
Посмотрите где MISSING в Tools-References…

Ёксели стоят на одном компе или на разных?

Автор - Alex_ST
Дата добавления - 22.06.2012 в 15:49
Мир MS Excel » Вопросы и решения » Готовые решения » Выпадающий календарь (Для программирующих в среде VBA.)
  • Страница 2 из 8
  • «
  • 1
  • 2
  • 3
  • 4
  • 7
  • 8
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!