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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса после Workbook_SheetCalculate 1 раз (Макросы/Sub)
Запуск макроса после Workbook_SheetCalculate 1 раз
RAN Дата: Пятница, 03.11.2017, 22:17 | Сообщение № 21
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
можно поставить задержку после передачи данных на лист.

Коля, с этого места чуть подробне.
В какой момент задержку?
На сколько?
Изменение 1 TB может ничего не изменить, кроме 1 ячейки на листе, а может вызвать лавину пересчета по всем листам книги.

[offtop]PS с этой задачей меня посещает уже 4 Муза. 3 первых посидели, и ушли. Может с четвертой что получиться?[/offtop]


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

Коля, с этого места чуть подробне.
В какой момент задержку?
На сколько?
Изменение 1 TB может ничего не изменить, кроме 1 ячейки на листе, а может вызвать лавину пересчета по всем листам книги.

[offtop]PS с этой задачей меня посещает уже 4 Муза. 3 первых посидели, и ушли. Может с четвертой что получиться?[/offtop]

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

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

Нет, конечно.

PS может пример слишком упрощен, и может быть, если рассматривать букву, то и работает. Но по смыслу - точно нет.


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

Сообщение отредактировал RAN - Пятница, 03.11.2017, 22:26
 
Ответить
Сообщение
На приложенном Вами файле мой код работает по Вашему ТЗ?

Нет, конечно.

PS может пример слишком упрощен, и может быть, если рассматривать букву, то и работает. Но по смыслу - точно нет.

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

начинал с Excel 4.0, видел 2.1
Как обнаружил, при наличии летучих формул, пересчет книги происходит даже при внесении изменений в другую книгу.

Тогда добавим глобальную переменную, считающую пересчитанные листы до "яяяяяя". Если изменения произошли только на "яяяяяя" за счёт летучей СЛЧИС (как в случае пересчёта в других книгах), то реакции нет - "ОченьПолезныйМакрос" не запускается:
[vba]
Код
Dim countCalculatedSheets As Integer
   
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    If Sh.Name = "яяяяяя" Then
        If countCalculatedSheets > 0 Then
            MsgBox "Запуск ОченьПолезногоМакроса"
            countCalculatedSheets = 0
        End If
    Else
        countCalculatedSheets = countCalculatedSheets + 1
    End If
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Как обнаружил, при наличии летучих формул, пересчет книги происходит даже при внесении изменений в другую книгу.

Тогда добавим глобальную переменную, считающую пересчитанные листы до "яяяяяя". Если изменения произошли только на "яяяяяя" за счёт летучей СЛЧИС (как в случае пересчёта в других книгах), то реакции нет - "ОченьПолезныйМакрос" не запускается:
[vba]
Код
Dim countCalculatedSheets As Integer
   
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    If Sh.Name = "яяяяяя" Then
        If countCalculatedSheets > 0 Then
            MsgBox "Запуск ОченьПолезногоМакроса"
            countCalculatedSheets = 0
        End If
    Else
        countCalculatedSheets = countCalculatedSheets + 1
    End If
End Sub
[/vba]

Автор - Gustav
Дата добавления - 03.11.2017 в 23:15
Wasilich Дата: Суббота, 04.11.2017, 00:02 | Сообщение № 24
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Всем здравствуйте.
Полгода я здесь не появлялся. Может и сейчас не надо было? :D
Чёй то мне кажется, Workbook_SheetCalculate не все подряд листы обрабатывает, а вроде как то выборочно, по сему, лист "яяяяяя" .... Но, это мне кажется. Проверять надо.
А вот если принудительно, то мне так видится.
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  For i = 1 To 3
    Worksheets(i).Calculate
  Next
  'код
End Sub
[/vba]
 
Ответить
СообщениеВсем здравствуйте.
Полгода я здесь не появлялся. Может и сейчас не надо было? :D
Чёй то мне кажется, Workbook_SheetCalculate не все подряд листы обрабатывает, а вроде как то выборочно, по сему, лист "яяяяяя" .... Но, это мне кажется. Проверять надо.
А вот если принудительно, то мне так видится.
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  For i = 1 To 3
    Worksheets(i).Calculate
  Next
  'код
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 04.11.2017 в 00:02
nilem Дата: Суббота, 04.11.2017, 00:06 | Сообщение № 25
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
все-таки не понятно
Смысл затеи - обновить форму (ShowModal=false), после окончания пересчета книги.
Допустим 1-я строчка кода записывает данные на лист, что приводит к пересчету листа (листов)
2-я строка - обновление формы.
М/у 1-й и 2-й Ексель будет пересчитывать связанные формулы на всех связанных листах. При этом макрос будет стоять на тормозе.
Как только формулы пересчитаются, выполнение перейдет ко 2-й строчке.
Разве не так? (на всякий случай проверил, - именно так)
Под задержкой имелось в виду Doevents, здесь это не нужно.

upd
Это если включен автоматический пересчет. Если ручной, - то Calculate


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Суббота, 04.11.2017, 00:08
 
Ответить
Сообщениевсе-таки не понятно
Смысл затеи - обновить форму (ShowModal=false), после окончания пересчета книги.
Допустим 1-я строчка кода записывает данные на лист, что приводит к пересчету листа (листов)
2-я строка - обновление формы.
М/у 1-й и 2-й Ексель будет пересчитывать связанные формулы на всех связанных листах. При этом макрос будет стоять на тормозе.
Как только формулы пересчитаются, выполнение перейдет ко 2-й строчке.
Разве не так? (на всякий случай проверил, - именно так)
Под задержкой имелось в виду Doevents, здесь это не нужно.

upd
Это если включен автоматический пересчет. Если ручной, - то Calculate

Автор - nilem
Дата добавления - 04.11.2017 в 00:06
RAN Дата: Суббота, 04.11.2017, 00:23 | Сообщение № 26
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Так...так..так...
Идея Николая кажтся наиболее преспективной.
Обмозговать треба!
Gustav, Wasilich, спасибо, но ваши варианты, пока, на мой взгляд, 2 очереди.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеТак...так..так...
Идея Николая кажтся наиболее преспективной.
Обмозговать треба!
Gustav, Wasilich, спасибо, но ваши варианты, пока, на мой взгляд, 2 очереди.

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

2010
Спал я уже... %)
Сей вариант не пойдет по одной простой причине -
Допустим 1-я строчка кода записывает данные на лист

да, будет работать.
А если меняем данные на листе? Этой строчки кода нет, а перерисовывать форму надо.
Так что буду пытать вариант Константина.
Или, альтернативный вариант, паузу Sleep в цикле до окончания пересчета.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеСпал я уже... %)
Сей вариант не пойдет по одной простой причине -
Допустим 1-я строчка кода записывает данные на лист

да, будет работать.
А если меняем данные на листе? Этой строчки кода нет, а перерисовывать форму надо.
Так что буду пытать вариант Константина.
Или, альтернативный вариант, паузу Sleep в цикле до окончания пересчета.

Автор - RAN
Дата добавления - 05.11.2017 в 09:40
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса после Workbook_SheetCalculate 1 раз (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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