Страницы: 1
RSS
Проблема. Срабатывание события ComboBox1_Change при вызове ComboBox1.Clear, Application.EnableEvents = False не помогает
 
Добрый день.

Код
    Application.EnableEvents = False
    
    Me.ComboBox1.Clear
    
    Application.EnableEvents = True


Даже при отключении событий событие ComboBox1_Change отрабатывает. В результате мы видим пустой msgbox, а его быть не должно.

Как так?
 
Все правильно работает .
Вт так очистите и ошибки не будет
Код
Private Sub CommandButton1_Click()
    ComboBox1.RowSource = ""
End Sub

А вообще я бы не пользовался заполнением этого типа контрола при помощи свойства RowSource
Изменено: Nordheim - 20.08.2020 15:05:58
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, спасибо. Но спортивный интерес остался.

Во вложении вариант 2 (просто чуть юзабельнее).

Самое интересное, что при первом клике на кнопку событие срабатывает, а вот если сразу нажать еще раз, то уже не срабатывает.
 
Nordheim, спасибо. Но спортивный интерес остался.

Во вложении вариант 2 (просто чуть юзабельнее).
Самое интересное, что при первом клике на кнопку событие срабатывает, а вот если сразу нажать еще раз, то уже не срабатывает. оно работает не так как надо (см. картинку). Оно не сбрасывает текущее значение, а тупо чистит список данных. А надо именно сбросить.
 
Цитата
kefirko написал:
а вот если сразу нажать еще раз
Нажал раз 50 не сработало, потому что стоит
Код
On Error Resume Next
"Все гениальное просто, а все простое гениально!!!"
 
Combobox.clear, так же чистит список а не сбрасывает текущее значение.
Очищается значение вот так    
Код
ComboBox1.Value = ""
Изменено: Nordheim - 20.08.2020 15:22:47
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, да, так работает как надо, но вопрос по срабатыванию события вопреки запрету остаётся открытым.

Похожая беда: Иностранцы
Изменено: kefirko - 21.08.2020 04:56:02
 
Цитата
Nordheim написал:
Нажал раз 50 не сработало, потому что стоит "On Error Resume Next"
Не поэтому, а потому что событие срабатывает при изменении значения, а изменения не происходит. Это тоже самое, что выбрать "5", а потом снова выбрать "5". Изменения нет, событие вызвано не будет.
 
Цитата
kefirko написал:
вопрос по срабатыванию события вопреки запрету
Какому запрету?
Код
Application.EnableEvents = False

влияет только на события ячеек листа, а в элементах управления сей запрет надо прописывать как-то так
Код
Private Sub ComboBox1_Change()
       If ComboBox1 = "" Then Exit Sub
       MsgBox Me.ComboBox1
End Sub
 
Цитата
RAN написал:
влияет только на события ячеек листа
Спасибо за разъяснение
 
Kb,j
Цитата
RAN написал:
сей запрет надо прописывать как-то так
Либо так
Код
Private Sub ComboBox1_Change()
       If Len(ComboBox1.Value)>0  Then   MsgBox Me.ComboBox1
End Sub
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1
Наверх