Мяв! Как удалось отследить, событие Workbook_SheetCalculate наступает после полного пересчета книги, что, в принципе, и требуется. Одна беда, оно наступает столько раз, сколько листов участвует в пересчете. Каким образом можно понять, что это событие наступило последний раз в этом цикле? Дабы запустить макрос по этому событию 1 раз, а не неопределенное количество раз, как это происходит сейчас.
Мяв! Как удалось отследить, событие Workbook_SheetCalculate наступает после полного пересчета книги, что, в принципе, и требуется. Одна беда, оно наступает столько раз, сколько листов участвует в пересчете. Каким образом можно понять, что это событие наступило последний раз в этом цикле? Дабы запустить макрос по этому событию 1 раз, а не неопределенное количество раз, как это происходит сейчас.RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Четверг, 02.11.2017, 10:22
RAN, Инкрементировать публичую переменную каждый раз при возникновении события на +1. Количество таких событий должно быть равно общему числу листов в книге, или я не правильно понял? (Ну и внутри же события выполнять что требуется после "+1" по проверки величины переменной(причём, если листов больше 1, достаточно будет сравнивать переменную с 1цей, а не с кол-вом листов даже...))
RAN, Инкрементировать публичую переменную каждый раз при возникновении события на +1. Количество таких событий должно быть равно общему числу листов в книге, или я не правильно понял? (Ну и внутри же события выполнять что требуется после "+1" по проверки величины переменной(причём, если листов больше 1, достаточно будет сравнивать переменную с 1цей, а не с кол-вом листов даже...))Roman777
Много чего не знаю!!!!
Сообщение отредактировал Roman777 - Четверг, 02.11.2017, 10:52
- Прочитайте Правила форума - Исправьте название темы согласно п.2 Правил форума - Приложите файл в формате Excel размером до 100кб согласно п.3 Правил форума
Хоть и , но и, тем не менее,
- Прочитайте Правила форума - Исправьте название темы согласно п.2 Правил форума - Приложите файл в формате Excel размером до 100кб согласно п.3 Правил форума
Константин, привет, ну конечно сюда. Тем более, что Андрей уже не сможет исправить название - сутки с момента создания темы прошли, модераторы, блин, спят в одном ботинке. Поэтому остается только кому-то из нас (уточнение,добавленное позже - "нас" - это модераторов) проснуться, обуться и поправить название на то, которое предложит Андрей (который, надеюсь, не проигнорирует это сообщение).
Константин, привет, ну конечно сюда. Тем более, что Андрей уже не сможет исправить название - сутки с момента создания темы прошли, модераторы, блин, спят в одном ботинке. Поэтому остается только кому-то из нас (уточнение,добавленное позже - "нас" - это модераторов) проснуться, обуться и поправить название на то, которое предложит Андрей (который, надеюсь, не проигнорирует это сообщение)._Boroda_
Итак, мой неказистый подходец: 1. Добавляем служебный лист (при желании далее может быть скрыт). 2. Переименовываем его как-нибудь в "яяяяяя", чтобы был гарантированно последним по алфавиту среди других листов - вроде Workbook_SheetCalculate их перебирает именно в алфавитном порядке по названиям. 3. На этом листе в ячейку A1 вводим формулу:
Код
=СЛЧИС()
, которая будет пересчитываться при любом "чихе" на других листах 4. Лист скрываем (ну, или не скрываем, если нет в том необходимости) 5. В Workbook_SheetCalculate проверяем имя: [vba]
Итак, мой неказистый подходец: 1. Добавляем служебный лист (при желании далее может быть скрыт). 2. Переименовываем его как-нибудь в "яяяяяя", чтобы был гарантированно последним по алфавиту среди других листов - вроде Workbook_SheetCalculate их перебирает именно в алфавитном порядке по названиям. 3. На этом листе в ячейку A1 вводим формулу:
Код
=СЛЧИС()
, которая будет пересчитываться при любом "чихе" на других листах 4. Лист скрываем (ну, или не скрываем, если нет в том необходимости) 5. В Workbook_SheetCalculate проверяем имя: [vba]
С утра инет помер, не мог реагировать. Как обнаружил, при наличии летучих формул, пересчет книги происходит даже при внесении изменений в другую книгу. В книге порядка 10 листов (в т.ч. и без формул), и что там за формулы, даже создатель не помнит. Но перекрестных ссылок ооочень много. Смысл затеи - обновить форму (ShowModal=false), после окончания пересчета книги. Почему хочется 1 раз перезаполнить? И очень просто, нужно перерисовать ~ 100 Me.Controls.
проснуться, обуться и поправить название на то, которое предложит Андрей
У меня с фантазией плохо. Могу предложить NewName "Однократное выполнение макроса после окончания пересчета книги с не определенным количеством листов, и не известными формулами". Файлик для поиграться
С утра инет помер, не мог реагировать. Как обнаружил, при наличии летучих формул, пересчет книги происходит даже при внесении изменений в другую книгу. В книге порядка 10 листов (в т.ч. и без формул), и что там за формулы, даже создатель не помнит. Но перекрестных ссылок ооочень много. Смысл затеи - обновить форму (ShowModal=false), после окончания пересчета книги. Почему хочется 1 раз перезаполнить? И очень просто, нужно перерисовать ~ 100 Me.Controls.
проснуться, обуться и поправить название на то, которое предложит Андрей
У меня с фантазией плохо. Могу предложить NewName "Однократное выполнение макроса после окончания пересчета книги с не определенным количеством листов, и не известными формулами". Файлик для поигратьсяRAN
А как понять, что пересчет закончился? И чем будет отличаться принудительный пересчет от пересчета по Worksheet_Change, возникщего после передачи данных на лист? Или, даже не после Worksheet_Change, а просто после изменения исходных данных в формуле.
А как понять, что пересчет закончился? И чем будет отличаться принудительный пересчет от пересчета по Worksheet_Change, возникщего после передачи данных на лист? Или, даже не после Worksheet_Change, а просто после изменения исходных данных в формуле.RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Пятница, 03.11.2017, 21:50
Собственно, Worksheet_Change -> автоматически происходит пересчет (неважно, сколько листов при этом задействованы) -> все, обновляем форму. Если формул очень-очень много, можно поставить задержку после передачи данных на лист.
Собственно, Worksheet_Change -> автоматически происходит пересчет (неважно, сколько листов при этом задействованы) -> все, обновляем форму. Если формул очень-очень много, можно поставить задержку после передачи данных на лист.nilem