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

Вход

Регистрация

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

 

= Мир MS Excel/Запуск макроса после Workbook_SheetCalculate 1 раз - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса после Workbook_SheetCalculate 1 раз (Макросы/Sub)
Запуск макроса после Workbook_SheetCalculate 1 раз
RAN Дата: Четверг, 02.11.2017, 10:21 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
Мяв!
Как удалось отследить, событие Workbook_SheetCalculate наступает после полного пересчета книги, что, в принципе, и требуется.
Одна беда, оно наступает столько раз, сколько листов участвует в пересчете.
Каким образом можно понять, что это событие наступило последний раз в этом цикле?
Дабы запустить макрос по этому событию 1 раз, а не неопределенное количество раз, как это происходит сейчас.


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

Сообщение отредактировал RAN - Четверг, 02.11.2017, 10:22
 
Ответить
СообщениеМяв!
Как удалось отследить, событие Workbook_SheetCalculate наступает после полного пересчета книги, что, в принципе, и требуется.
Одна беда, оно наступает столько раз, сколько листов участвует в пересчете.
Каким образом можно понять, что это событие наступило последний раз в этом цикле?
Дабы запустить макрос по этому событию 1 раз, а не неопределенное количество раз, как это происходит сейчас.

Автор - RAN
Дата добавления - 02.11.2017 в 10:21
Roman777 Дата: Четверг, 02.11.2017, 10:47 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 797
Репутация: 89 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
RAN,
Инкрементировать публичую переменную каждый раз при возникновении события на +1.
Количество таких событий должно быть равно общему числу листов в книге, или я не правильно понял?
(Ну и внутри же события выполнять что требуется после "+1" по проверки величины переменной(причём, если листов больше 1, достаточно будет сравнивать переменную с 1цей, а не с кол-вом листов даже...))


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 02.11.2017, 10:52
 
Ответить
СообщениеRAN,
Инкрементировать публичую переменную каждый раз при возникновении события на +1.
Количество таких событий должно быть равно общему числу листов в книге, или я не правильно понял?
(Ну и внутри же события выполнять что требуется после "+1" по проверки величины переменной(причём, если листов больше 1, достаточно будет сравнивать переменную с 1цей, а не с кол-вом листов даже...))

Автор - Roman777
Дата добавления - 02.11.2017 в 10:47
RAN Дата: Четверг, 02.11.2017, 11:09 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
или я не правильно понял?

Не знаю :)
оно наступает столько раз, сколько листов участвует в пересчете.


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

Не знаю :)
оно наступает столько раз, сколько листов участвует в пересчете.

Автор - RAN
Дата добавления - 02.11.2017 в 11:09
InExSu Дата: Четверг, 02.11.2017, 23:13 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 28 ±
Замечаний: 80% ±

Excel 2010
не неопределенное количество

= определённое?
Может код покажете?
 
Ответить
Сообщение
не неопределенное количество

= определённое?
Может код покажете?

Автор - InExSu
Дата добавления - 02.11.2017 в 23:13
_Boroda_ Дата: Пятница, 03.11.2017, 09:45 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11644
Репутация: 4825 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
- Прочитайте Правила форума
- Исправьте название темы согласно п.2 Правил форума
- Приложите файл в формате Excel размером до 100кб согласно п.3 Правил форума

Хоть и :D :D :D , но и, тем не менее, deal deal deal


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение- Прочитайте Правила форума
- Исправьте название темы согласно п.2 Правил форума
- Приложите файл в формате Excel размером до 100кб согласно п.3 Правил форума

Хоть и :D :D :D , но и, тем не менее, deal deal deal

Автор - _Boroda_
Дата добавления - 03.11.2017 в 09:45
Gustav Дата: Пятница, 03.11.2017, 11:37 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1459
Репутация: 556 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Всем привет! Я знаю ответ (или подход, возможно, один из подходов). Мне сюда написать или в личной переписке Андрею? ;)


Мой tip box - яд 41001663842605
 
Ответить
СообщениеВсем привет! Я знаю ответ (или подход, возможно, один из подходов). Мне сюда написать или в личной переписке Андрею? ;)

Автор - Gustav
Дата добавления - 03.11.2017 в 11:37
_Boroda_ Дата: Пятница, 03.11.2017, 11:49 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11644
Репутация: 4825 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Константин, привет, ну конечно сюда.
Тем более, что Андрей уже не сможет исправить название - сутки с момента создания темы прошли, модераторы, блин, спят в одном ботинке.
Поэтому остается только кому-то из нас (уточнение,добавленное позже - "нас" - это модераторов) проснуться, обуться и поправить название на то, которое предложит Андрей (который, надеюсь, не проигнорирует это сообщение).


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995


Сообщение отредактировал _Boroda_ - Пятница, 03.11.2017, 21:06
 
Ответить
СообщениеКонстантин, привет, ну конечно сюда.
Тем более, что Андрей уже не сможет исправить название - сутки с момента создания темы прошли, модераторы, блин, спят в одном ботинке.
Поэтому остается только кому-то из нас (уточнение,добавленное позже - "нас" - это модераторов) проснуться, обуться и поправить название на то, которое предложит Андрей (который, надеюсь, не проигнорирует это сообщение).

Автор - _Boroda_
Дата добавления - 03.11.2017 в 11:49
Gustav Дата: Пятница, 03.11.2017, 12:06 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1459
Репутация: 556 ±
Замечаний: 0% ±

начинал с Excel 4.0...
ну конечно сюда.

Ок yes

Итак, мой неказистый подходец:
1. Добавляем служебный лист (при желании далее может быть скрыт).
2. Переименовываем его как-нибудь в "яяяяяя", чтобы был гарантированно последним по алфавиту среди других листов - вроде Workbook_SheetCalculate их перебирает именно в алфавитном порядке по названиям.
3. На этом листе в ячейку A1 вводим формулу:
Код
=СЛЧИС()
, которая будет пересчитываться при любом "чихе" на других листах
4. Лист скрываем (ну, или не скрываем, если нет в том необходимости)
5. В Workbook_SheetCalculate проверяем имя:
[vba]
Код
If Sh.Name = "яяяяяя" Then ЗапускНужногоМакроса
[/vba]


Мой tip box - яд 41001663842605
 
Ответить
Сообщение
ну конечно сюда.

Ок yes

Итак, мой неказистый подходец:
1. Добавляем служебный лист (при желании далее может быть скрыт).
2. Переименовываем его как-нибудь в "яяяяяя", чтобы был гарантированно последним по алфавиту среди других листов - вроде Workbook_SheetCalculate их перебирает именно в алфавитном порядке по названиям.
3. На этом листе в ячейку A1 вводим формулу:
Код
=СЛЧИС()
, которая будет пересчитываться при любом "чихе" на других листах
4. Лист скрываем (ну, или не скрываем, если нет в том необходимости)
5. В Workbook_SheetCalculate проверяем имя:
[vba]
Код
If Sh.Name = "яяяяяя" Then ЗапускНужногоМакроса
[/vba]

Автор - Gustav
Дата добавления - 03.11.2017 в 12:06
RAN Дата: Пятница, 03.11.2017, 20:40 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
С утра инет помер, не мог реагировать.
Как обнаружил, при наличии летучих формул, пересчет книги происходит даже при внесении изменений в другую книгу.
В книге порядка 10 листов (в т.ч. и без формул), и что там за формулы, даже создатель не помнит. Но перекрестных ссылок ооочень много.
Смысл затеи - обновить форму (ShowModal=false), после окончания пересчета книги. Почему хочется 1 раз перезаполнить? И очень просто, нужно перерисовать ~ 100 Me.Controls.
проснуться, обуться и поправить название на то, которое предложит Андрей

У меня с фантазией плохо.
Могу предложить NewName
"Однократное выполнение макроса после окончания пересчета книги с не определенным количеством листов, и не известными формулами".
Файлик для поиграться
К сообщению приложен файл: 11.xlsm(20Kb)


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

Сообщение отредактировал RAN - Пятница, 03.11.2017, 20:48
 
Ответить
СообщениеС утра инет помер, не мог реагировать.
Как обнаружил, при наличии летучих формул, пересчет книги происходит даже при внесении изменений в другую книгу.
В книге порядка 10 листов (в т.ч. и без формул), и что там за формулы, даже создатель не помнит. Но перекрестных ссылок ооочень много.
Смысл затеи - обновить форму (ShowModal=false), после окончания пересчета книги. Почему хочется 1 раз перезаполнить? И очень просто, нужно перерисовать ~ 100 Me.Controls.
проснуться, обуться и поправить название на то, которое предложит Андрей

У меня с фантазией плохо.
Могу предложить NewName
"Однократное выполнение макроса после окончания пересчета книги с не определенным количеством листов, и не известными формулами".
Файлик для поиграться

Автор - RAN
Дата добавления - 03.11.2017 в 20:40
InExSu Дата: Пятница, 03.11.2017, 21:07 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 28 ±
Замечаний: 80% ±

Excel 2010
Файл ниачём.
Пробовали
[vba]
Код
Application.CalculationState
[/vba]
?
 
Ответить
СообщениеФайл ниачём.
Пробовали
[vba]
Код
Application.CalculationState
[/vba]
?

Автор - InExSu
Дата добавления - 03.11.2017 в 21:07
RAN Дата: Пятница, 03.11.2017, 21:13 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
И к нему таймер цеплять? Или как?
Файл ниачём.

Как так? Вопрос - как в файлике при изменении любой цветной ячейки получить только 1 Msgbox.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеИ к нему таймер цеплять? Или как?
Файл ниачём.

Как так? Вопрос - как в файлике при изменении любой цветной ячейки получить только 1 Msgbox.

Автор - RAN
Дата добавления - 03.11.2017 в 21:13
InExSu Дата: Пятница, 03.11.2017, 21:20 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 28 ±
Замечаний: 80% ±

Excel 2010
при изменении любой цветной ячейки получить только 1 Msgbox

Слегка понятнее.
[vba]
Код
If Application.CalculationState <> xlDone Then MsgBox Sh.Name
[/vba]
0 msgbox при
[vba]
Код
Application.Calculation = xlAutomatic
[/vba]
 
Ответить
Сообщение
при изменении любой цветной ячейки получить только 1 Msgbox

Слегка понятнее.
[vba]
Код
If Application.CalculationState <> xlDone Then MsgBox Sh.Name
[/vba]
0 msgbox при
[vba]
Код
Application.Calculation = xlAutomatic
[/vba]

Автор - InExSu
Дата добавления - 03.11.2017 в 21:20
RAN Дата: Пятница, 03.11.2017, 21:23 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
0 msgbox

0 не надо. Нужен 1


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

0 не надо. Нужен 1

Автор - RAN
Дата добавления - 03.11.2017 в 21:23
RAN Дата: Пятница, 03.11.2017, 21:26 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
Цитата
Выполнение макроса после Workbook_SheetCalculate

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


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата
Выполнение макроса после Workbook_SheetCalculate

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

Автор - RAN
Дата добавления - 03.11.2017 в 21:26
InExSu Дата: Пятница, 03.11.2017, 21:30 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 28 ±
Замечаний: 80% ±

Excel 2010
Нужен 1

[vba]
Код
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    If Sh.Name = ActiveSheet.Name Then MsgBox Sh.Name
End Sub
[/vba]
 
Ответить
Сообщение
Нужен 1

[vba]
Код
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    If Sh.Name = ActiveSheet.Name Then MsgBox Sh.Name
End Sub
[/vba]

Автор - InExSu
Дата добавления - 03.11.2017 в 21:30
nilem Дата: Пятница, 03.11.2017, 21:42 | Сообщение № 16
Группа: Авторы
Ранг: Старожил
Сообщений: 1324
Репутация: 469 ±
Замечаний: 0% ±

Excel 2013
принудительно выполнять пересчет (Application.Calculate) и затем обновлять форму - тоже не?


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениепринудительно выполнять пересчет (Application.Calculate) и затем обновлять форму - тоже не?

Автор - nilem
Дата добавления - 03.11.2017 в 21:42
RAN Дата: Пятница, 03.11.2017, 21:44 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
При чем тут ActiveSheet? На каком/каких листах будет пересчет, не известно.
Если бы все было так просто, я бы этого вопроса не задавал.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПри чем тут ActiveSheet? На каком/каких листах будет пересчет, не известно.
Если бы все было так просто, я бы этого вопроса не задавал.

Автор - RAN
Дата добавления - 03.11.2017 в 21:44
RAN Дата: Пятница, 03.11.2017, 21:45 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
тоже не?

А как понять, что пересчет закончился?
И чем будет отличаться принудительный пересчет от пересчета по Worksheet_Change, возникщего после передачи данных на лист?
Или, даже не после Worksheet_Change, а просто после изменения исходных данных в формуле.


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

Сообщение отредактировал RAN - Пятница, 03.11.2017, 21:50
 
Ответить
Сообщение
тоже не?

А как понять, что пересчет закончился?
И чем будет отличаться принудительный пересчет от пересчета по Worksheet_Change, возникщего после передачи данных на лист?
Или, даже не после Worksheet_Change, а просто после изменения исходных данных в формуле.

Автор - RAN
Дата добавления - 03.11.2017 в 21:45
nilem Дата: Пятница, 03.11.2017, 22:04 | Сообщение № 19
Группа: Авторы
Ранг: Старожил
Сообщений: 1324
Репутация: 469 ±
Замечаний: 0% ±

Excel 2013
Собственно, Worksheet_Change -> автоматически происходит пересчет (неважно, сколько листов при этом задействованы) -> все, обновляем форму.
Если формул очень-очень много, можно поставить задержку после передачи данных на лист.


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеСобственно, Worksheet_Change -> автоматически происходит пересчет (неважно, сколько листов при этом задействованы) -> все, обновляем форму.
Если формул очень-очень много, можно поставить задержку после передачи данных на лист.

Автор - nilem
Дата добавления - 03.11.2017 в 22:04
InExSu Дата: Пятница, 03.11.2017, 22:15 | Сообщение № 20
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 28 ±
Замечаний: 80% ±

Excel 2010
Если бы все было так просто

На приложенном Вами файле мой код работает по Вашему ТЗ?
 
Ответить
Сообщение
Если бы все было так просто

На приложенном Вами файле мой код работает по Вашему ТЗ?

Автор - InExSu
Дата добавления - 03.11.2017 в 22:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса после Workbook_SheetCalculate 1 раз (Макросы/Sub)
Страница 1 из 212»
Поиск:

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