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

Вход

Регистрация

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

 

= Мир MS Excel/Отловить переименование листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Отловить переименование листа
Alex Дата: Пятница, 17.01.2014, 16:30 | Сообщение № 1
Группа: Гости
Как в экселе отловить переименование листа?
Есть комбобокс на форме в нем список листов книги.
При добавлении листа событие NewSheet
При удалении листа событие SgeetBeforeDelete

А как синхронизировать список в комбике, если лист переименовали?
 
Ответить
СообщениеКак в экселе отловить переименование листа?
Есть комбобокс на форме в нем список листов книги.
При добавлении листа событие NewSheet
При удалении листа событие SgeetBeforeDelete

А как синхронизировать список в комбике, если лист переименовали?

Автор - Alex
Дата добавления - 17.01.2014 в 16:30
Alex Дата: Пятница, 17.01.2014, 17:35 | Сообщение № 2
Группа: Гости
При удалении листа в событии SHeetBeforeDelete выставляю флаг, а на событии SheetActivate вызываю процедуру обновления комбика
так же флаг выставляю в NewSheet
а в процедуре после обновления комбика сбрасываю флаг.
Это все работает, но как отследить смену имени листа???
 
Ответить
СообщениеПри удалении листа в событии SHeetBeforeDelete выставляю флаг, а на событии SheetActivate вызываю процедуру обновления комбика
так же флаг выставляю в NewSheet
а в процедуре после обновления комбика сбрасываю флаг.
Это все работает, но как отследить смену имени листа???

Автор - Alex
Дата добавления - 17.01.2014 в 17:35
SkyPro Дата: Пятница, 17.01.2014, 17:40 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Обращайтесь к листу по CodeName
[vba]
Код
sheets(1).codename
Лист1.[A1].address(1,1,1,1)
[/vba]
Тогда переименование листов не "испортит" вам макросы.


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Пятница, 17.01.2014, 17:40
 
Ответить
СообщениеОбращайтесь к листу по CodeName
[vba]
Код
sheets(1).codename
Лист1.[A1].address(1,1,1,1)
[/vba]
Тогда переименование листов не "испортит" вам макросы.

Автор - SkyPro
Дата добавления - 17.01.2014 в 17:40
Alex_ST Дата: Пятница, 17.01.2014, 22:17 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3211
Репутация: 609 ±
Замечаний: 0% ±

2003
Обращайтесь к листу по CodeName
Это точно!
Я тоже это часто использую для защиты от шаловливых ручонок шибко дюже грамотных пользователей.
По умолчанию листы в книге создаются с кодовым именем = имени листа. А после переименования листа кодовое имя остаётся прежним. Это хорошо видно в Object Browser'e VBA-проекта. Там сначала написано кодовое имя листа, а потом в скобочках - имя листа.
Этим удобно управлять в Properties Window (F4): кодовое имя отображается в самой верхней строчке свойств листа в строке (Name), а имя листа - ближе к концу списка свойств в строке Name
Я в некоторых случаях чтобы не путаться у важных листов даже намеренно изменяю кодовое имя на такое, чтобы его ни с чем не спутать.



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


Сообщение отредактировал Alex_ST - Пятница, 17.01.2014, 22:18
 
Ответить
Сообщение
Обращайтесь к листу по CodeName
Это точно!
Я тоже это часто использую для защиты от шаловливых ручонок шибко дюже грамотных пользователей.
По умолчанию листы в книге создаются с кодовым именем = имени листа. А после переименования листа кодовое имя остаётся прежним. Это хорошо видно в Object Browser'e VBA-проекта. Там сначала написано кодовое имя листа, а потом в скобочках - имя листа.
Этим удобно управлять в Properties Window (F4): кодовое имя отображается в самой верхней строчке свойств листа в строке (Name), а имя листа - ближе к концу списка свойств в строке Name
Я в некоторых случаях чтобы не путаться у важных листов даже намеренно изменяю кодовое имя на такое, чтобы его ни с чем не спутать.

Автор - Alex_ST
Дата добавления - 17.01.2014 в 22:17
Alex Дата: Воскресенье, 19.01.2014, 12:16 | Сообщение № 5
Группа: Гости
Нет,Про CodeName я в курсе и тут это немного не в тему)
Мне необходимо отловить именно смену имени(название на ярлычке)листа
Что бы в комбике были имена листов книги.
На данный момент все работает, но только при смене имени листа в комбике остается старое имя и как-то не много не суразно, хотя все работает даже при выборе "несуществующего листа" в комбо.

Вопрос - Можно ли вообще поймать событие переименование листа?
 
Ответить
СообщениеНет,Про CodeName я в курсе и тут это немного не в тему)
Мне необходимо отловить именно смену имени(название на ярлычке)листа
Что бы в комбике были имена листов книги.
На данный момент все работает, но только при смене имени листа в комбике остается старое имя и как-то не много не суразно, хотя все работает даже при выборе "несуществующего листа" в комбо.

Вопрос - Можно ли вообще поймать событие переименование листа?

Автор - Alex
Дата добавления - 19.01.2014 в 12:16
Serge_007 Дата: Воскресенье, 19.01.2014, 12:18 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Такого события не существует в эксель


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеТакого события не существует в эксель

Автор - Serge_007
Дата добавления - 19.01.2014 в 12:18
nilem Дата: Воскресенье, 19.01.2014, 12:21 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Есть комбобокс на форме в нем список листов книги.

а комбобокс у вас как заполняется?


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
Есть комбобокс на форме в нем список листов книги.

а комбобокс у вас как заполняется?

Автор - nilem
Дата добавления - 19.01.2014 в 12:21
Alex Дата: Воскресенье, 19.01.2014, 12:35 | Сообщение № 8
Группа: Гости
Цитата nilem
а комбобокс у вас как заполняется?

Forma.Combo.AddItem

Цитата Serge_007
Такого события не существует в эксель

Жаль :(
Ясно, дело - труба
 
Ответить
Сообщение
Цитата nilem
а комбобокс у вас как заполняется?

Forma.Combo.AddItem

Цитата Serge_007
Такого события не существует в эксель

Жаль :(
Ясно, дело - труба

Автор - Alex
Дата добавления - 19.01.2014 в 12:35
Serge_007 Дата: Воскресенье, 19.01.2014, 12:45 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
дело - труба
Не всё так печально :)

Можно пробегаться циклом по листам и брать новое название переименованного листа

Или вообще - брать список имен листов с листа, на котором этот список сделать формулами. Формулы-то пересчитываются сразу после переименования :)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
дело - труба
Не всё так печально :)

Можно пробегаться циклом по листам и брать новое название переименованного листа

Или вообще - брать список имен листов с листа, на котором этот список сделать формулами. Формулы-то пересчитываются сразу после переименования :)

Автор - Serge_007
Дата добавления - 19.01.2014 в 12:45
Alex Дата: Воскресенье, 19.01.2014, 12:46 | Сообщение № 10
Группа: Гости
[vba]
Код
Sub UpdateList(Ind As Integer)
If Not NeededUpdateList Then GoTo Ind
FrmRep.cbRep.Clear
For N = 3 To ThisWorkbook.Sheets.Count
FrmRep.cbRep.AddItem pvargitem:=ThisWorkbook.Sheets(N).Name
Next N
NeededUpdateList = False
Ind:
If Ind < FrmRep.cbRep.ListCount Then FrmRep.cbRep.ListIndex = Ind
End Sub
[/vba]

При удалении листа в событии SHeetBeforeDelete выставляю флаг, а на событии SheetActivate вызываю процедуру обновления комбика
так же флаг выставляю в NewSheet
а в процедуре после обновления комбика сбрасываю флаг.
 
Ответить
Сообщение[vba]
Код
Sub UpdateList(Ind As Integer)
If Not NeededUpdateList Then GoTo Ind
FrmRep.cbRep.Clear
For N = 3 To ThisWorkbook.Sheets.Count
FrmRep.cbRep.AddItem pvargitem:=ThisWorkbook.Sheets(N).Name
Next N
NeededUpdateList = False
Ind:
If Ind < FrmRep.cbRep.ListCount Then FrmRep.cbRep.ListIndex = Ind
End Sub
[/vba]

При удалении листа в событии SHeetBeforeDelete выставляю флаг, а на событии SheetActivate вызываю процедуру обновления комбика
так же флаг выставляю в NewSheet
а в процедуре после обновления комбика сбрасываю флаг.

Автор - Alex
Дата добавления - 19.01.2014 в 12:46
Alex Дата: Воскресенье, 19.01.2014, 12:52 | Сообщение № 11
Группа: Гости
[quote=Serge_007]Можно при выполнении AddItem пробегаться циклом по листам и брать новое название переименованного листа[/quote]

Комбо вновь синхронизируется, после смены имени листа, если удалить или добавить новый лист.

Но хотелось бы еще и на момент переименования, ну т.е. сразу после переименования :)
 
Ответить
Сообщение[quote=Serge_007]Можно при выполнении AddItem пробегаться циклом по листам и брать новое название переименованного листа[/quote]

Комбо вновь синхронизируется, после смены имени листа, если удалить или добавить новый лист.

Но хотелось бы еще и на момент переименования, ну т.е. сразу после переименования :)

Автор - Alex
Дата добавления - 19.01.2014 в 12:52
Alex Дата: Воскресенье, 19.01.2014, 12:56 | Сообщение № 12
Группа: Гости
[quote=Serge_007]Формулы-то пересчитываются сразу после переименования[/quote]

Т.е. Эксель как-то определяет переименование? А пользователю (VBA) не говорит. Засада)

Ладно, это обидно, но не критично.

А по поводу формул и списка листов на отдельном листе - подумаю, но врядли.
 
Ответить
Сообщение[quote=Serge_007]Формулы-то пересчитываются сразу после переименования[/quote]

Т.е. Эксель как-то определяет переименование? А пользователю (VBA) не говорит. Засада)

Ладно, это обидно, но не критично.

А по поводу формул и списка листов на отдельном листе - подумаю, но врядли.

Автор - Alex
Дата добавления - 19.01.2014 в 12:56
Serge_007 Дата: Воскресенье, 19.01.2014, 13:05 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Эксель как-то определяет переименование? А пользователю (VBA) не говорит
Excel и VB - это два разных программных продукта, реализованные разными разработчиками и изначально не связанные друг с другом. С появлением VBA связь появилась, но не 100%-я. Естественно, что средства самого Excel намного более применимы при работе с Excel, чем средства стороннего (хоть и адаптированного) продукта :)

В перспективе видится VSTO - полностью адаптированный к офису (не только к Excel) язык программирования


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Эксель как-то определяет переименование? А пользователю (VBA) не говорит
Excel и VB - это два разных программных продукта, реализованные разными разработчиками и изначально не связанные друг с другом. С появлением VBA связь появилась, но не 100%-я. Естественно, что средства самого Excel намного более применимы при работе с Excel, чем средства стороннего (хоть и адаптированного) продукта :)

В перспективе видится VSTO - полностью адаптированный к офису (не только к Excel) язык программирования

Автор - Serge_007
Дата добавления - 19.01.2014 в 13:05
RAN Дата: Воскресенье, 19.01.2014, 13:23 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Сколько ни читал, так и не понял смысла всего этого геморроя.
Чем не нравится
[vba]
Код
Private Sub UserForm_Activate()
[/vba] ?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеСколько ни читал, так и не понял смысла всего этого геморроя.
Чем не нравится
[vba]
Код
Private Sub UserForm_Activate()
[/vba] ?

Автор - RAN
Дата добавления - 19.01.2014 в 13:23
Serge_007 Дата: Воскресенье, 19.01.2014, 13:25 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Если переименование листа произошло ПОСЛЕ активации формы?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЕсли переименование листа произошло ПОСЛЕ активации формы?

Автор - Serge_007
Дата добавления - 19.01.2014 в 13:25
RAN Дата: Воскресенье, 19.01.2014, 14:42 | Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
.
К сообщению приложен файл: 6412516.xls (54.5 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение.

Автор - RAN
Дата добавления - 19.01.2014 в 14:42
Serge_007 Дата: Воскресенье, 19.01.2014, 14:54 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
:)

Опять-таки, события переименования листа не существует :)
Только костыли :)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение:)

Опять-таки, события переименования листа не существует :)
Только костыли :)

Автор - Serge_007
Дата добавления - 19.01.2014 в 14:54
alex77755 Дата: Воскресенье, 19.01.2014, 19:13 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

[vba]
Код
UserForm1.Show 1
[/vba]
И никто не переименует лист пока форма открыта


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщение[vba]
Код
UserForm1.Show 1
[/vba]
И никто не переименует лист пока форма открыта

Автор - alex77755
Дата добавления - 19.01.2014 в 19:13
Alex_ST Дата: Воскресенье, 19.01.2014, 19:17 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3211
Репутация: 609 ±
Замечаний: 0% ±

2003
UserForm1.Show 1

Но ведь форма-то и так по умолчанию в модальном режиме открывается и пока она открыта никто листы переименовать не может.
Значит топик-стартеру нужно либо не модальный режим, либо комбобокс не на форме, а прямо на листе...
Иначе чего тогда было бы мудрить?



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


Сообщение отредактировал Alex_ST - Воскресенье, 19.01.2014, 19:19
 
Ответить
Сообщение
UserForm1.Show 1

Но ведь форма-то и так по умолчанию в модальном режиме открывается и пока она открыта никто листы переименовать не может.
Значит топик-стартеру нужно либо не модальный режим, либо комбобокс не на форме, а прямо на листе...
Иначе чего тогда было бы мудрить?

Автор - Alex_ST
Дата добавления - 19.01.2014 в 19:17
RAN Дата: Воскресенье, 19.01.2014, 19:27 | Сообщение № 20
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Дык я специально для Сержа не модальную сделал! Так сказать, по максимуму гемора. :D


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДык я специально для Сержа не модальную сделал! Так сказать, по максимуму гемора. :D

Автор - RAN
Дата добавления - 19.01.2014 в 19:27
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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