Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 17.05.2018, 11:01   #1
tungsten
Пользователь
 
Регистрация: 05.11.2012
Адрес: Самарская обл.
Сообщений: 15
Репутация: 10
По умолчанию Произвольный? возврат в управляющую конструкцию после выхода из нее

Доброго времени, друзья!
Никогда такого небыло и вот опять...
Чувствую некий пробел в знаниях...
Excel 2016 VBA
Процедура обрабатывает событие изменения TextBox'a, с целью оставить только положительное значение и предотвратить ввод символов отличных от цифр.
Код:

1. Private Sub SumBox_change()
2. If Not IsNumeric(SumBox.value) Or SumBox.value < 0 Then
3. SumBox.value = ""
4. MsgBox "Сумма должна быть положительной!"
5. End If
6. End Sub

Ввожу символ вне диапазона. По дебаггеру процедура выполняется полностью, строки 1-6. Затем после строки 6 возвращается снова на строку 4! затем штатно 5,6.
Вот поясните мне, пожалуйста, чем вызвано это поведение?
Повторение мать учения...
я понимаю если бы были метки перехода, вызовы, цикл, ну или хотя-бы начал сначала процедуру...
tungsten вне форума   Ответить с цитированием
Старый 17.05.2018, 11:05   #2
tungsten
Пользователь
 
Регистрация: 05.11.2012
Адрес: Самарская обл.
Сообщений: 15
Репутация: 10
По умолчанию

сам косяк... рекурсию вызвал...
tungsten вне форума   Ответить с цитированием
Старый 17.05.2018, 11:10   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,766
Репутация: 5213
По умолчанию

можно выключить.

перед изменением
Код:

    Application.EnableEvents = False

после
Код:

    Application.EnableEvents = True

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 17.05.2018, 11:50   #4
tungsten
Пользователь
 
Регистрация: 05.11.2012
Адрес: Самарская обл.
Сообщений: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
можно выключить.
В sql можно триггеры отключать, подумал что было бы неплохо делать то же самое в VBA...
Спасибо за подсказку! Буду пользоваться!
tungsten вне форума   Ответить с цитированием
Старый 17.05.2018, 12:29   #5
Казанский
Профессионал
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 1,989
Репутация: 741
По умолчанию

Application.EnableEvents не влияет на события элементов управления! Можно так
Код:

Private Sub SumBox_change()
Static busy As Boolean
  If busy Then Exit Sub
  If Not IsNumeric(SumBox.Value) Or SumBox.Value < 0 Then
    busy = True
    SumBox.Value = ""
    busy = False
    MsgBox "Сумма должна быть положительной!"
  End If
End Sub

__________________
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума   Ответить с цитированием
Старый 17.05.2018, 12:33   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,766
Репутация: 5213
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Application.EnableEvents не влияет на события элементов управления!
Приношу свои извинения за то, что ввёл в заблуждение!
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать конструкцию выхода из циклов qqq`` Общие вопросы Delphi 2 20.10.2017 00:09
Возврат id после запроса Festovec БД в Delphi 4 16.03.2016 18:06
Программа после выхода из функции прыгает на другую строчку. zipwind C++ Builder 1 09.05.2011 18:46
Запоминание Checked после выхода из проги в MainMenu NuR1k Общие вопросы Delphi 2 24.08.2010 19:26
Отключается звук после выхода из ждущего режима Костян Пират Операционные системы общие вопросы 4 18.12.2009 15:23


10:21.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru