Страницы: 1
RSS
Полная очистка комбобокс
 
добрый день.

при активации Userform в Combobox создается список.
при выходе из Userform очищаю Combobox так: UserForm1.ComboBox1.Clear - все нормально
если в Combobox внести значение руками (не из формируемого списка), а потом выйти и снова зайти на Userform - в Combobox остается это введенное руками значение.
приходиться удалять его так: UserForm1.ComboBox1.Value = ""

в итоге получается чтобы при выходе из UserForm и повторном входе в ComboBox1 было пусто надо писать две строки сразу так:
Код
UserForm1.ComboBox1.Value = ""
UserForm1.ComboBox1.Clear

Возможно ли это написать одним оператором, который очистит все в ComboBox ?
Изменено: brother_alex - 07.12.2018 17:59:31
 
Цитата
brother_alex написал: если в Combobox внести значение руками (не из формируемого списка), а потом выйти и снова зайти на Userform - в Combobox остается это введенное руками значение.
Выходите из формы как? Полный выход - Unload. Если Hide - это не выход, только скрытие и все текущие изменения на форме сохраняются.
Непонятно, зачем чистить весь список (.Clear)...

Очистка только ComboBox
Код
Private Sub clean_()
Dim x As MSForms.Control
    For Each x In Me.Controls
        If TypeOf x Is MSForms.ComboBox Then
            x.Value = ""
            x.Clear
        End If
    Next x
End Sub
 
как вариант
viktur , извините Вашего сообщения не видел. :(  
Изменено: Logistic - 07.12.2018 17:49:13
 
vikttur.
выхожу из формы - HIDE
я так понял что Вы подтверждаете, что выход только такой (двухстрочный):
x.Value = ""
x.Clear

почему мне надо чистить весь список:
1. в этом комбобоксе при каждом вызове формы в зависимости от условий создаю разные списки - поэтому чтобы списки не добавлялись один к другому при повторном вызове формы надо делать x.Clear
2. я могу в этот комбобокс вписать свое значение, которого нету в создаваемом списке. тогда x.Clear очистит только список, а введенное вручную значение при повторном вызове формы там останется - поэтому делаем x.Value = ""

Искал, думал что есть что-то типа универсального, чтобы одним оператором
 
Цитата
brother_alex написал:
выхожу из формы - HIDE
Это не "выход", а скрытие.
Цитата
vikttur написал:
выход - Unload
Выгрузка, если точнее.
 
для Logistic
Ваш макрос с (" ") не отчистит список в комбобоксе. Только удалит видимое в нем значение

для Юрий М
я неправильно выразился.
скажем так: использую HIDE
 
Hide - это Вы скрываете форму. Всё, что было в контролах, останется при последующем отображении. Выгружайте форму (Unload me) - тогда всё очистится.
 
Цитата
brother_alex написал: Вы подтверждаете, что выход только такой (двухстрочный)
Нет, есть однострочный:
Код
Unload Me
 
Тогда еще один последний вопрос:

в чем конкретная разница в выгрузке или скрытии формы ?
где какие преимущества ?
 
При выгрузке произойдёт полная очистка. При последующей загрузке сработают процедуры инициализации и активации. Если же форму скрыли, то при последющем её отображении, всё контролы сохранят значения и сработает только процедура активации.
 
Примерный аналог: в ячейке имеем картинку.
1. Делаем её невидимой, а потом отображаем - скрытие.
2. Удаляем и заново вставляем - выгрузка.
 
Не знаю, насколько это правильно, я в подобных случаях "ComboBox1.Value = """ помещаю на событие активации формы, эффект такой же
Страницы: 1
Наверх