при активации Userform в Combobox создается список. при выходе из Userform очищаю Combobox так: UserForm1.ComboBox1.Clear - все нормально если в Combobox внести значение руками (не из формируемого списка), а потом выйти и снова зайти на Userform - в Combobox остается это введенное руками значение. приходиться удалять его так: UserForm1.ComboBox1.Value = ""
в итоге получается чтобы при выходе из UserForm и повторном входе в ComboBox1 было пусто надо писать две строки сразу так:
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
vikttur. выхожу из формы - HIDE я так понял что Вы подтверждаете, что выход только такой (двухстрочный): x.Value = "" x.Clear
почему мне надо чистить весь список: 1. в этом комбобоксе при каждом вызове формы в зависимости от условий создаю разные списки - поэтому чтобы списки не добавлялись один к другому при повторном вызове формы надо делать x.Clear 2. я могу в этот комбобокс вписать свое значение, которого нету в создаваемом списке. тогда x.Clear очистит только список, а введенное вручную значение при повторном вызове формы там останется - поэтому делаем x.Value = ""
Искал, думал что есть что-то типа универсального, чтобы одним оператором
При выгрузке произойдёт полная очистка. При последующей загрузке сработают процедуры инициализации и активации. Если же форму скрыли, то при последющем её отображении, всё контролы сохранят значения и сработает только процедура активации.