0 / 0 / 0
Регистрация: 23.03.2019
Сообщений: 4
1

После закрытия Excel пропадает обработка события книги

23.03.2019, 23:36. Показов 4198. Ответов 9

Студворк — интернет-сервис помощи студентам
Коллеги,
Не нашел ничего похожего в сети, может, кто сталкивался.
Есть макрос, который нужно запускать при изменении ячейки из списка.
Для этой книги пишу в ее модуле банальный обработчик:
Visual Basic
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$2" Then
        Call CreateDashboard
    End If
End Sub
Все работает.
Сохраняю (конечно, с поддержкой макросов), закрываю программу, открываю. Обработчик на месте, но запуска макроса при изменении ячейки не происходит, будто никакого обработчика и нет. Из меню макрос нормально запускается.
Возвращаюсь к предыдущему состоянию файла (без обработчика), добавляю его, все работает. Закрываю, открываю - не работает.
Что за напасть?
Да, Excel 2019 Mac (16.23)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2019, 23:36
Ответы с готовыми решениями:

После закрытия книги, Excel продолжает висеть в процессах
Вот код который я запускаю из ACAD: Sub Main() excelApp = CreateObject("Excel.Application")...

Обработка события закрытия окна
Как обработать событие закрытие окна? И еще где можно найти русскоязычную литературу по обработки...

Обработка события закрытия формы
Есть две формы. Нужно чтобы при нажатии на крестик в углу одной она закрывалась и открывалась...

Обработка события закрытия окна браузера
Приветствую. Вопрос такой: нужно обрабатывать событие закрытия окна IE, но для разных случаев...

9
1845 / 1160 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
24.03.2019, 06:26 2
А почему в её модуле, раз макрос, работает на листе, то и нужно его писать в коде листа. Ведь обработчики на каждом листе могут быть свои
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
24.03.2019, 07:53 3
ginfonic, Такое безобразие может случиться, если в параметрах безопасности выставлено Отключить все макросы без уведомления

Цитата из офисной справки (правда для Win):

Откройте вкладку Файл. Появится представление Backstage.

В разделе Справка щелкните элемент Параметры откроется диалоговое окно Параметры.

Щелкните элемент Центр управления безопасностью, а затем — Параметры центра управления безопасностью.

В центре управления безопасностью щелкните элемент Параметры макросов.

Выберите нужные параметры и нажмите кнопку ОК.

Следующий раздел содержит более подробное описание параметров макросов.

Описание параметров макросов

Отключить все макросы без уведомления. Этот параметр отключает макросы и связанные с ними оповещения безопасности.

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

Отключить все макросы кроме макросов с цифровой подписью. Этот параметр отключает макросы без отключения оповещений системы безопасности, которые будут появляться при их наличии. Однако при наличии у макроса цифровой подписи надежного издателя он запускается, если этому издателю выражено доверие. В противном случае выводится уведомление о необходимости включить макрос, содержащий цифровую подпись, и выразить доверие издателю.

Включить все макросы (не рекомендуется, возможен запуск опасной программы). Если задан этот параметр, выполняются все макросы. Компьютер становится уязвимым для потенциально опасных программ.
0
0 / 0 / 0
Регистрация: 23.03.2019
Сообщений: 4
24.03.2019, 09:34  [ТС] 4
Цитата Сообщение от Burk Посмотреть сообщение
А почему в её модуле, раз макрос, работает на листе, то и нужно его писать в коде листа. Ведь обработчики на каждом листе могут быть свои
Я это и имел в виду, неправильно выразился. Обработчик конечно в коде этого листа, иначе бы он и не запустился никогда.
Основной макрос в общих Модулях книги.

Добавлено через 2 минуты
Цитата Сообщение от pashulka Посмотреть сообщение
ginfonic, Такое безобразие может случиться, если в параметрах безопасности выставлено Отключить все макросы без уведомления
Нет, проверил сразу. Было "Выключить все макросы с уведомлением" (включал каждый раз при открытии), стало "Включить все макросы". Но никак не влияет, по прежнему после закрытия обработчик перестает работать.
0
1845 / 1160 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
24.03.2019, 09:45 5
ginfonic, ну тогда поставьте после строки 2 напр. MsgBox Target.address, тогда и будет всё ясно. Если сообщение будет, то значит дело в вашем основном макросе. Не думаю, что на Mac что-то по-другому, ваш макрос, просто для очистки совести, поставил в свой файл, естественно, всё работает.
0
0 / 0 / 0
Регистрация: 23.03.2019
Сообщений: 4
24.03.2019, 09:54  [ТС] 6
Цитата Сообщение от Burk Посмотреть сообщение
ginfonic, ну тогда поставьте после строки 2 напр. MsgBox Target.address, тогда и будет всё ясно. Если сообщение будет, то значит дело в вашем основном макросе. Не думаю, что на Mac что-то по-другому
Пробовал, конечно. Сообщения нет. То есть оно есть первый раз до закрытия программы, потом нет.
Основной макрос, как писал, из меню макросов запускается без проблем.
Дело в обработчике.

Ещё есть ерунда, может быть с этим связанная.
После закрытия и открытия Excell. Окно для редактирования кода листа, в котором был код, становится в 90% случаев нечитаемым. Вместо внутренностей в 60% случаев часть внутренностей браузера, который примерно на этом месте позади окна Excel. Ещё с 30% просто серый фон. И только иногда, не знаю как, удаётся увидеть нормальный фон окна и код в нем редактируемый. Окно редактирования кода модуля с основным макросом всегда с порядке. Такой вот Глюк. Может, в этом дело?
0
1845 / 1160 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
24.03.2019, 10:11 7
ginfonic, так может просто перегрузить офис или проверить на вирусы. В самом обработчике никакого криминала.
А чуда, о котором вы пишете, быть не должно. Вариант - берёте ваш файл и идёте к другу на обычный виндовый комп. Если всё Ок, лечите свой

Добавлено через 7 минут
Или выставьте файл, лучше укороченный, если можно, посмотрю у себя
0
0 / 0 / 0
Регистрация: 23.03.2019
Сообщений: 4
24.03.2019, 10:32  [ТС] 8
Цитата Сообщение от Burk Посмотреть сообщение
ginfonic, так может просто перегрузить офис или проверить на вирусы. В самом обработчике никакого криминала.
А чуда, о котором вы пишете, быть не должно. Вариант - берёте ваш файл и идёте к другу на обычный виндовый комп. Если всё Ок, лечите свой

Добавлено через 7 минут
Или выставьте файл, лучше укороченный, если можно, посмотрю у себя
Перегрузить, в смысле заново установить? Попробую.
А вирусы для Мака, боюсь, не найду...

Файл выложил, ему для работы макроса нужен еще внешний большой файл с конфиденцом. Его выложить не могу, да и не надо.
Если у вас вообще по изменению ячейки А2 из списка запустится макрос (и вылетит с ошибкой) - уже хорошо. У меня не хочет.
Вложения
Тип файла: zip Dashboard.xlsm.zip (270.5 Кб, 7 просмотров)
0
1845 / 1160 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
24.03.2019, 11:30 9
ginfonic, запустил, всё работает как надо, НООООО .......
Вхожу в ВБА, там список листов в два раза больше чем на экране и скрытых нет. В первых (которые есть) первая буква Л заменена на знак < (это всё в редакторе). Открыл новый файл и ваши листы с экрана скопировал в этот файл (макросы Лист1 и Модуле1 тоже скопировал). Цвет ваших полос и границы стали кирпичного цвета, я не менял цвет, увидите сами.
Запустите мой файл, интересно, будет работать или нет. Но что-то не в порядке на вашем компе, это моё мнение. Сообщите, что будет
Вложения
Тип файла: rar Dashboard1.rar (297.4 Кб, 3 просмотров)
0
1845 / 1160 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
24.03.2019, 11:43 10
Да, в моём файле листы в ВБА показываются как надо, а ваши кроме < ещё меняют название, перед последней цифрой появляется ещё одна цифра (всё это в редакторе), наверно поэтому и не работает, мой файл должен работать

Добавлено через 8 минут
Малость неправ, ваш-то файл у меня работает!
0
24.03.2019, 11:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2019, 11:43
Помогаю со студенческими работами здесь

Корректная обработка закрытия Excel
Есть некий алгоритм берущий данные из Excel файла: private static string...

В Libreoffice Base после закрытия окна связей пропадает связь
- Создал все связи - Закрываю окно связей - Открываю окно связей. Пропадают две связи (помеченные...

Как сохранить последнюю запись в TextBox после закрытия книги?
КАК сохранить последнюю запись в TextBox после закрытия книги.

Обработка события Click, вставка html после генерации и обработка этого кода
Подскажите пожалуйста как заставить работать эту часть кода 18 строка ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru