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

Вход

Регистрация

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

 

= Мир MS Excel/При выполнении кода обойти событие листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » При выполнении кода обойти событие листа (Макросы/Sub)
При выполнении кода обойти событие листа
Сергей13 Дата: Понедельник, 13.05.2019, 22:37 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте.

Ребята как обойти или отключить событие листа,

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    'Оператор
End Sub
[/vba]
при выполнении макроса, расположенного в модуле, который выполняет некие действия на данном листе и в результате чего выдает ошибку на строку кода в событии листа.
Попытка отключить строку кода в событии

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    'Оператор
    Application.EnableEvents = True
End Sub
[/vba]
не устраняет данную проблему.


Сообщение отредактировал Сергей13 - Понедельник, 13.05.2019, 22:38
 
Ответить
СообщениеЗдравствуйте.

Ребята как обойти или отключить событие листа,

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    'Оператор
End Sub
[/vba]
при выполнении макроса, расположенного в модуле, который выполняет некие действия на данном листе и в результате чего выдает ошибку на строку кода в событии листа.
Попытка отключить строку кода в событии

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    'Оператор
    Application.EnableEvents = True
End Sub
[/vba]
не устраняет данную проблему.

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

2010
Цитата Сергей13, 13.05.2019 в 22:37, в сообщении № 1 ()
Попытка отключить строку кода в событии
..............
не устраняет данную проблему.

Что означает - неча на зеркало пенять.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата Сергей13, 13.05.2019 в 22:37, в сообщении № 1 ()
Попытка отключить строку кода в событии
..............
не устраняет данную проблему.

Что означает - неча на зеркало пенять.

Автор - RAN
Дата добавления - 13.05.2019 в 22:50
Сергей13 Дата: Понедельник, 13.05.2019, 23:47 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Спасибо!
 
Ответить
СообщениеRAN, Спасибо!

Автор - Сергей13
Дата добавления - 13.05.2019 в 23:47
K-SerJC Дата: Вторник, 14.05.2019, 07:56 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
[offtop]это из серии сходить туда не знаю куда, принести то не знаю что :D [/offtop]


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение[offtop]это из серии сходить туда не знаю куда, принести то не знаю что :D [/offtop]

Автор - K-SerJC
Дата добавления - 14.05.2019 в 07:56
Alex_ST Дата: Среда, 15.05.2019, 08:45 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3198
Репутация: 606 ±
Замечаний: 0% ±

2003
Сергей13, Вы отключаете обработку события уже после того, как начата его обработка в процедуре .
Ну, таки-да, в течении времени исполнения процедуры Private Sub Worksheet_Change(ByVal Target As Range) события Worksheet_Change обрабатываться не будут.
Инструкцию Application.EnableEvents = False нужно выносить из процедуры Private Sub Worksheet_Change(ByVal Target As Range) и выполнять заранее в каком-то другом макросе.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеСергей13, Вы отключаете обработку события уже после того, как начата его обработка в процедуре .
Ну, таки-да, в течении времени исполнения процедуры Private Sub Worksheet_Change(ByVal Target As Range) события Worksheet_Change обрабатываться не будут.
Инструкцию Application.EnableEvents = False нужно выносить из процедуры Private Sub Worksheet_Change(ByVal Target As Range) и выполнять заранее в каком-то другом макросе.

Автор - Alex_ST
Дата добавления - 15.05.2019 в 08:45
_Boroda_ Дата: Среда, 15.05.2019, 12:04 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
заранее в каком-то другом макросе
Полностью солидарен
Да прямо в этом
Цитата Сергей13, 13.05.2019 в 22:37, в сообщении № 1 ()
макроса, расположенного в модуле, который выполняет некие действия на данном листе
можно и выключать. Перед тем, как что-то на листе сделать. Только включить обратно не забудьте потом
Типа вот так
[vba]
Код
sut tt
' какой-то код без обращений к листу
Application.EnableEvents = False 'отключаем
cells(2,8)="знечение" 'обращение к листу
' какой-то код без обращений к листу
cells(2,888)="знечение1" 'обращение к листу
Application.EnableEvents = True'включаем
' какой-то код без обращений к листу
end sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
заранее в каком-то другом макросе
Полностью солидарен
Да прямо в этом
Цитата Сергей13, 13.05.2019 в 22:37, в сообщении № 1 ()
макроса, расположенного в модуле, который выполняет некие действия на данном листе
можно и выключать. Перед тем, как что-то на листе сделать. Только включить обратно не забудьте потом
Типа вот так
[vba]
Код
sut tt
' какой-то код без обращений к листу
Application.EnableEvents = False 'отключаем
cells(2,8)="знечение" 'обращение к листу
' какой-то код без обращений к листу
cells(2,888)="знечение1" 'обращение к листу
Application.EnableEvents = True'включаем
' какой-то код без обращений к листу
end sub
[/vba]

Автор - _Boroda_
Дата добавления - 15.05.2019 в 12:04
RAN Дата: Среда, 15.05.2019, 12:29 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Саша, Леша!
Может у меня гранаты Excel не той системы?
Но работает, однако!
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Target = Target * 2
    Application.EnableEvents = True
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеСаша, Леша!
Может у меня гранаты Excel не той системы?
Но работает, однако!
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Target = Target * 2
    Application.EnableEvents = True
End Sub
[/vba]

Автор - RAN
Дата добавления - 15.05.2019 в 12:29
_Boroda_ Дата: Среда, 15.05.2019, 12:39 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А почему не должно бы работать? Конечно работает. Вопрос-то не в этом. Я понял так - автор запускает макрос, в процессе выполнения которого происходит перепрыгивание на Worksheet_Change и все портится. Нужно сделать так, чтобы не перепрыгивало.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА почему не должно бы работать? Конечно работает. Вопрос-то не в этом. Я понял так - автор запускает макрос, в процессе выполнения которого происходит перепрыгивание на Worksheet_Change и все портится. Нужно сделать так, чтобы не перепрыгивало.

Автор - _Boroda_
Дата добавления - 15.05.2019 в 12:39
bmv98rus Дата: Среда, 15.05.2019, 12:59 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
[offtop]судя по #3 клиент уже доволен :-), но горшочек все варит и варит :-)[/offtop]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение[offtop]судя по #3 клиент уже доволен :-), но горшочек все варит и варит :-)[/offtop]

Автор - bmv98rus
Дата добавления - 15.05.2019 в 12:59
Сергей13 Дата: Четверг, 16.05.2019, 17:28 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Донесли суть. Спасибо всем!
 
Ответить
СообщениеДонесли суть. Спасибо всем!

Автор - Сергей13
Дата добавления - 16.05.2019 в 17:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » При выполнении кода обойти событие листа (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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