|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.07.2011, 19:43 | #1 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
событие удаление листа
Необходимо отловить событие удаление листа в любой отрытой книге. Имеем класс описывающий объект Application With Events. Как всегда есть событие WorkbookNewSheet, а события удаления листа нет.
В инете удалось найти: Код:
Хотелось бы знать какой метод используют гуру.
С уважением, Алексей.
|
17.07.2011, 21:23 | #2 | |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Цитата:
Ни разу не проверял, но сделал бы так.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
|
17.07.2011, 22:06 | #3 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Посмотреть бы на того невменяемого гуру, который удаляя лист не знал бы об этом. Жутко интересно - зачем? Легко проверить наличие листа. Листы удаляют обычно, по причине. Допустим, удалили случайно. И тут есть возможность при закрытии книги проверить наличие и закрыть не сохраняя. Другого способа восстановить лист нет. Разработчики тоже посчитали ввод такого события ненужным. И все же - зачем? Недавно обсуждали отлов события переименования листа(кстати, так же можно отследить и удаление). Я так и не понял зачем
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
17.07.2011, 22:21 | #4 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Кроме того очень удобно делать через события "обязательные" действия. Например: у меня лист может быть создан разными макросами в разных условиях. Мне приходилось так или иначе прописывать обязательные действия во всех макросах. Так же были проблемы при изменении "обязательных" действий При перехода на работу с классом описывающий объект Application With Events, появилась возможность всю работу переложить на событие создания книги. Теперь я во всех макросах убрал целые куски кода, и многие проблемы сразу пропали. То же само я хотел проделать и с удалением листа. На текущий момент частично решило задачу использование метода SheetActivate, который так же срабатывает при удаление листа. Но далеко не во всех ситуациях его достаточно.
С уважением, Алексей.
Последний раз редактировалось tae1980; 17.07.2011 в 22:32. |
|
17.07.2011, 22:30 | #5 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Алексей, думаете понятней стало? Ничуть. Отследили удаление и что? Какой нужен результат? Лист-то не восстановить. А если отслеживать ВСЕ действия пользователя? Это какая программа получится?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
17.07.2011, 22:39 | #6 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Я не думаю что стоит хранить названия листов, ведь в данном случае нужно отследить факт удаления листа, а не то какой лист был удален. Пока достаточно хранить для каждой книге количество листов. И если при событие SheetActivate оно больше, чем текущее кол-во листов, то значит один из листов был удален. А названия листов если нужно, я бы хранил в строковой переменной через разделитель. Очень простой и эффективный метод, работающий почти во всех языках программирования, то если когда нибудь придется переносить код - работы будет меньше.
С уважением, Алексей.
Последний раз редактировалось tae1980; 17.07.2011 в 22:48. |
17.07.2011, 22:44 | #7 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Программист так или иначе остуживает ВСЕ действия пользователя, не нужно заблуждаться. Я писал на ассме для спекки, так вот там действительно отслеживал ВСЕ действия пользователя (в том числе несколько интерфейсов, один из них даже был объектно ориентирован :). Как видишь не умер. И программы весьма успешно ДО СИХ ПОР работают. Просто на современном уровне львиную долю работы на себя берет ОС. Мне же нужны не ВСЕ действия пользователя, а весьма ограниченный набор.
С уважением, Алексей.
Последний раз редактировалось tae1980; 17.07.2011 в 22:48. |
|
18.07.2011, 01:20 | #8 | |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Цитата:
я не зря упомянул "или еще чего", под еще чего я подразумевал CodeName которое не доступно для обычного пользователя. А как хранить информацию выбор за вами.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
|
18.07.2011, 21:04 | #9 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Разумеется при добавления листа, необходим увеличивать счетчик листов и т.п. Но это уж чисто техническая задача и я не думаю что на ней стоит заострять внимание.
С уважением, Алексей.
Последний раз редактировалось tae1980; 18.07.2011 в 21:07. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
отображение данных первого листа, при активации ячейки второго листа | Akmal-Sharipov | Microsoft Office Excel | 4 | 03.12.2010 14:48 |
Удаление активой строки с одного листа на другой | MilanAC | Помощь студентам | 0 | 28.04.2010 22:08 |
Событие листа - изменение выделения. | Евгений ГВС | Microsoft Office Excel | 1 | 05.08.2009 01:24 |
Удаление листа без предупреждения | tolikman | Microsoft Office Excel | 3 | 24.06.2009 19:13 |
Excel: Удаление графиков и картинок с листа | treiber | Microsoft Office Excel | 5 | 04.09.2008 13:22 |