Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Как обойти выполнение макроса по событию OPEN и SHEET CHANGE?

Автор Vic Voodoo, 24.05.2012, 12:24

« назад - далее »

Vic Voodoo

Добрый день!
Я написал макрос, который выполнялся при открытии книги. Все было нормально. Потом я решил, что хорошо бы, чтобы этот же макрос выполнялся при каждом вводе/изменении данных в любой ячейке таблицы.
Я выбрал событие SHEET CHANGE и скопировал туда тот же код. Потом я сохранил файл и вышел. Когда попробовал запустить этот файл, все повисло.
Посоветуйте, что делать? Можно ли обойти выполнение макроса при запуске? Или придется все сначала делать?

Serge 007

Я так понимаю что макрос запускается при открытии и зацикливается?

Отключите макросы и откройте файл для редактирования кода
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Poltava

Запретите макросы. Откройте файл. Запустите редактор VBA. Ну и далее исправляем свои ошибки.
1) Нужно прикладывать файл к сообщению!
Первое не выполнено так что погадаем на кофейной гуще
2) Подозреваю что у вас макрос что то записывает в ячейки книги следовательно получаем зацикливание
- запустили макрос - изменили ячейку - запустили макрос и так до бесконечности так сказать У попа была собака... Если я прав то в начало макроса добавьте отключение реакции на события Application.EnableEvents = False и в конце не забудьте ее обратно включить.
3)
ЦитироватьЯ выбрал событие SHEET CHANGE и скопировал туда тот же код
Ну и зачем ??? а если потом поменять что то в коде захотите и в одном месте поменяете а в другом нет ??? или если листов штук 20 будет ??? Напишите это процедурой в стандартном модуле а потом вызывайте ее где хотите!
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

Vic Voodoo

Спасибо. У меня вдруг получилось остановить это дело при помощи Esc. Раньше не получалось.

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

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

???

Или я путаю чего-то?

Цитата: Serge 007 от 24.05.2012, 12:31
Я так понимаю что макрос запускается при открытии и зацикливается?

Отключите макросы и откройте файл для редактирования кода

Vic Voodoo

Да, да, Вы правы. Насчет п.2 я даже сам додумался. Только я не знал про Application.EnableEvents = False
Спасибо Вам !!!



Цитата: Poltava от 24.05.2012, 12:35
Запретите макросы. Откройте файл. Запустите редактор VBA. Ну и далее исправляем свои ошибки.
1) Нужно прикладывать файл к сообщению!
Первое не выполнено так что погадаем на кофейной гуще
2) Подозреваю что у вас макрос что то записывает в ячейки книги следовательно получаем зацикливание
- запустили макрос - изменили ячейку - запустили макрос и так до бесконечности так сказать У попа была собака... Если я прав то в начало макроса добавьте отключение реакции на события Application.EnableEvents = False и в конце не забудьте ее обратно включить.
3)
ЦитироватьЯ выбрал событие SHEET CHANGE и скопировал туда тот же код
Ну и зачем ??? а если потом поменять что то в коде захотите и в одном месте поменяете а в другом нет ??? или если листов штук 20 будет ??? Напишите это процедурой в стандартном модуле а потом вызывайте ее где хотите!