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

Вход

Регистрация

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

 

= Мир MS Excel/Почему выполняется код не имеющий конкретной процедуре? - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Почему выполняется код не имеющий конкретной процедуре?
vigl Дата: Суббота, 17.02.2018, 00:25 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Всем доброй ночи!
Прошу помочь разобраться с такой проблемой:
Имеются две формы, на первой выбирается действие, во второй это действие выполняется (в моем случае добавление ФИО и № телефона, редактирование введенных данных и удаление не нужных). К процедуре ввода данных вопросов нет, а, вот, при редактировании данных и попытке их сохранения, после добавления трех значений, выполнение программы перебрасывается на процедуры всех объектов формы не имеющие непосредственного отношения к сохранению отредактированных данных, после чего возвращается к этой процедуре, потом опять переходит на объекты формы и так несколько раз. Как можно решить данную проблему? Файл с примером прилагаю.

Прошу прощения за ошибку в название темы. Должно было быть "Почему выполняется код не имеющий отношение к конкретной процедуре?"
К сообщению приложен файл: _6.xlsm (50.2 Kb)


Сообщение отредактировал vigl - Суббота, 17.02.2018, 00:28
 
Ответить
СообщениеВсем доброй ночи!
Прошу помочь разобраться с такой проблемой:
Имеются две формы, на первой выбирается действие, во второй это действие выполняется (в моем случае добавление ФИО и № телефона, редактирование введенных данных и удаление не нужных). К процедуре ввода данных вопросов нет, а, вот, при редактировании данных и попытке их сохранения, после добавления трех значений, выполнение программы перебрасывается на процедуры всех объектов формы не имеющие непосредственного отношения к сохранению отредактированных данных, после чего возвращается к этой процедуре, потом опять переходит на объекты формы и так несколько раз. Как можно решить данную проблему? Файл с примером прилагаю.

Прошу прощения за ошибку в название темы. Должно было быть "Почему выполняется код не имеющий отношение к конкретной процедуре?"

Автор - vigl
Дата добавления - 17.02.2018 в 00:25
Karataev Дата: Суббота, 17.02.2018, 11:13 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
У Вас используется свойство "RowSource":
[vba]
Код
With lstFIO
    .RowSource = "$A$2:" + m
End With
[/vba]
Когда происходит изменение ячейки, входящей в "RowSource", у ListBox'а запускается событие "Click".
Варианты решения:
1) не используйте свойство "RowSource", а придумайте что-нибудь другое
2) можно сделать модульную переменную и назвать ее "boolEnableEvents". В том месте кода, где происходит самопроизвольный запуск процедур, записывайте в переменную "boolEnableEvents = False", а в начале запускаемых процедур проверяйте, что находится в переменной "boolEnableEvents": если False, то делайте выход из процедуры, если True, то пусть процедура выполняется.
При запуске формы записывайте в переменную "boolEnableEvents = True".
В Вашем макросе я поставил отключение/включение событий в двух местах. Сделайте в остальных местах по такому же принципу.
К сообщению приложен файл: _6_kar.xlsm (34.8 Kb)


Сообщение отредактировал Karataev - Суббота, 17.02.2018, 11:13
 
Ответить
СообщениеУ Вас используется свойство "RowSource":
[vba]
Код
With lstFIO
    .RowSource = "$A$2:" + m
End With
[/vba]
Когда происходит изменение ячейки, входящей в "RowSource", у ListBox'а запускается событие "Click".
Варианты решения:
1) не используйте свойство "RowSource", а придумайте что-нибудь другое
2) можно сделать модульную переменную и назвать ее "boolEnableEvents". В том месте кода, где происходит самопроизвольный запуск процедур, записывайте в переменную "boolEnableEvents = False", а в начале запускаемых процедур проверяйте, что находится в переменной "boolEnableEvents": если False, то делайте выход из процедуры, если True, то пусть процедура выполняется.
При запуске формы записывайте в переменную "boolEnableEvents = True".
В Вашем макросе я поставил отключение/включение событий в двух местах. Сделайте в остальных местах по такому же принципу.

Автор - Karataev
Дата добавления - 17.02.2018 в 11:13
Roman777 Дата: Суббота, 17.02.2018, 11:17 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
перебрасывается на процедуры всех объектов формы не имеющие непосредственного отношения к сохранению отредактированных данных
как Вы это определили?
Я шибко не разбирался в коде, но возможно, Вы грешите на возникновение событийных процедур, которые, естественно, возникают после "необходимого" события?


Много чего не знаю!!!!
 
Ответить
Сообщение
перебрасывается на процедуры всех объектов формы не имеющие непосредственного отношения к сохранению отредактированных данных
как Вы это определили?
Я шибко не разбирался в коде, но возможно, Вы грешите на возникновение событийных процедур, которые, естественно, возникают после "необходимого" события?

Автор - Roman777
Дата добавления - 17.02.2018 в 11:17
vigl Дата: Суббота, 17.02.2018, 11:49 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Roman777,
как Вы это определили?

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


Сообщение отредактировал vigl - Суббота, 17.02.2018, 11:56
 
Ответить
СообщениеRoman777,
как Вы это определили?

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

Автор - vigl
Дата добавления - 17.02.2018 в 11:49
vigl Дата: Суббота, 17.02.2018, 11:52 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Karataev, спасибо Вам огромное!!! в очередной раз выручили.
 
Ответить
СообщениеKarataev, спасибо Вам огромное!!! в очередной раз выручили.

Автор - vigl
Дата добавления - 17.02.2018 в 11:52
  • Страница 1 из 1
  • 1
Поиск:

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