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

Вход

Регистрация

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

 

= Мир MS Excel/Не отрабатывает код в событии Workbook_BeforeClose - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Не отрабатывает код в событии Workbook_BeforeClose
StoTisteg Дата: Четверг, 20.09.2018, 12:10 | Сообщение № 1
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Собственно, у меня есть макрос, который после своего выполнения должен закрывать книгу. На событие Workbook_BeforeClose я вешаю "сборщик мусора":[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)

   Dim Sh As Worksheet
   
   ThisWorkbook.Activate
   Worksheets("URL").Visible = xlVeryHidden
   Application.DisplayAlerts = False
   For Each Sh In Worksheets
      If Sh.Name <> "URL" And Sh.Name <> "Кнопка" Then Sh.Delete
   Next Sh
   ThisWorkbook.Save

End Sub
[/vba]который исправно отрабатывает. Только вот если событие вызвано не пользователем, а кодом, то код ничего вообще не делает. То есть ВБА исправно проходит по всем веткам кода и... никаких изменений в файле. Вызов из события отдельного макроса со сборщиком, DoEvents и наоборот Application.EnableEvents=False не помогают ничуточки. Собственно, как это обойти — понятно, нужно вызвать "сборщик" из основного кода непосредственно перед строкой ThisWorkbook.Close. Непонятно другое — на кой, простите, нужно событие, которое нельзя обработать...
К сообщению приложен файл: Workbook_Before.xlsm (19.4 Kb)


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Четверг, 20.09.2018, 12:26
 
Ответить
СообщениеСобственно, у меня есть макрос, который после своего выполнения должен закрывать книгу. На событие Workbook_BeforeClose я вешаю "сборщик мусора":[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)

   Dim Sh As Worksheet
   
   ThisWorkbook.Activate
   Worksheets("URL").Visible = xlVeryHidden
   Application.DisplayAlerts = False
   For Each Sh In Worksheets
      If Sh.Name <> "URL" And Sh.Name <> "Кнопка" Then Sh.Delete
   Next Sh
   ThisWorkbook.Save

End Sub
[/vba]который исправно отрабатывает. Только вот если событие вызвано не пользователем, а кодом, то код ничего вообще не делает. То есть ВБА исправно проходит по всем веткам кода и... никаких изменений в файле. Вызов из события отдельного макроса со сборщиком, DoEvents и наоборот Application.EnableEvents=False не помогают ничуточки. Собственно, как это обойти — понятно, нужно вызвать "сборщик" из основного кода непосредственно перед строкой ThisWorkbook.Close. Непонятно другое — на кой, простите, нужно событие, которое нельзя обработать...

Автор - StoTisteg
Дата добавления - 20.09.2018 в 12:10
китин Дата: Четверг, 20.09.2018, 12:12 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7029
Репутация: 1078 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а темы то зачем дублировать?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеа темы то зачем дублировать?

Автор - китин
Дата добавления - 20.09.2018 в 12:12
StoTisteg Дата: Четверг, 20.09.2018, 12:14 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Это случайно, при сохранении выскочила 500 ошибка, так я вернулся и сохранил снова, не знал, что сохранилось.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеЭто случайно, при сохранении выскочила 500 ошибка, так я вернулся и сохранил снова, не знал, что сохранилось.

Автор - StoTisteg
Дата добавления - 20.09.2018 в 12:14
StoTisteg Дата: Четверг, 20.09.2018, 12:37 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Поэкспериментировал ещё... Изменения на листы вносятся исправно. Но попытки что-либо активировать ни к чему не приводят.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеПоэкспериментировал ещё... Изменения на листы вносятся исправно. Но попытки что-либо активировать ни к чему не приводят.

Автор - StoTisteg
Дата добавления - 20.09.2018 в 12:37
  • Страница 1 из 1
  • 1
Поиск:

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