Страницы: 1
RSS
ComboBox. Нельзя стрелками выбрать значение из выпадающего списка
 
Всем добрый вечер.

Столкнулся с такой проблемой при использовании ComboBox - невозможно стрелками выбрать значение из выпадающего списка.
Данная ситуация возникает, когда в Private Sub ComboBox1_Change() прописано какое-нибудь действие, например:
Код
Private Sub ComboBox1_Change()

' выбранная дата отображается в формате "январь 2018"
   If Me.ComboBox1.Value <> "" Then
      Me.ComboBox1.Value = Format(Me.ComboBox1, "MMMM/YYYY")
   End If

End Sub

стрелками всегда выбирается только первое значение.

Если список в ComboBox формируется через RowSource или в другом месте, при этом в Private Sub ComboBox1_Change() ничего не прописано, то все в порядке, стрелками можно выбрать значение.

Подскажите, что нужно сделать, чтобы в первом случае стрелками также можно было выбирать значения?

Спасибо.
 
Проблема в строке
Код
Me.ComboBox1.Value = Format(Me.ComboBox1, "MMMM/YYYY")

которая меняет значение Combobox1 и рекурсивно вызывает процедуру ComboBox1_Change(). Закомментируйте эту строку и проблема, описанная Вами, исчезнет (но возникнут новые).

Почитайте об объекте Combobox. Если сейчас в Combobox1 ввести символ, например, "a", то возникает ошибка. Это то поведение, которое Вы ожидаете?
Владимир
 
Заполняйте КомбоБокс при вызове формы сразу форматируя значения в нужный вид
Код
Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Worksheets("Лист1").Range("начало").Value
    For i = 0 To Me.ComboBox1.ListCount - 1
        ComboBox1.List(i) = Format(DateValue(ComboBox1.List(i)), "MMMM YYYY")
    Next i
End Sub

Private Sub ComboBox1_Change()
ComboBox2.Clear ' очищаем список "Выберите дату"
Dim MesyacOtchet As String
m = DateSerial(Year(CDate(ComboBox1.Value)), Month(CDate(ComboBox1.Value)) + 1, 1) - 1 - CDate(ComboBox1.Value) ' подсчет количества дней в месяце
' формирование списка дат
For i = 0 To m
    MesyacOtchet = CDate(ComboBox1.Value) + i
    ComboBox2.AddItem MesyacOtchet
Next i
End Sub
В свойствах ComboBox1 очистите свойство RowSource
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Заполняйте КомбоБокс при вызове формы сразу форматируя значения в нужный вид ...
Спасибо, теперь работает.

Еще один вопрос: на просторах этого замечательного форума нашел файл, где осуществлен поиск с сортировкой в ComboBox. Все работает как надо, кроме одного - нельзя выбрать стрелками, только первое значение. Перепробовал кучу вариантов, но все без толку.

Вариант TextBox&ListBox не подходит, т.к. на одной форме надо разместить четыре разных отбора.

Заранее спасибо.
 
Del
Изменено: Sanja - 18.01.2018 13:20:08
Согласие есть продукт при полном непротивлении сторон
 
И в первом , во втором случаях нельзя было выбрать значения из выпадающего списка стрелками. Я думал, что решение будет универсальным, поэтому описал только первый случай
 
Да, да извините, недочитал до конца
Согласие есть продукт при полном непротивлении сторон
 
Насколько я понял, проблема в том, что список для ComboBox формируется в ComboBox_Change. А как это обойти, я, к сожалению, не знаю.
Изменено: Srg.Stark - 18.01.2018 13:25:23
 
Непонятно как Вы хотите совместить Фильтрацию при наборе символов и выбор стрелками. Как это должно работать?  
Согласие есть продукт при полном непротивлении сторон
 
Есть некий список, допустим регионы, при наборе символов, в выпадающем списке остаются отфильтрованные, на пример: при наборе "мор" останутся только Приморский край и Республика Мордовия; чтобы выбрать значение, быстрее будет два раза нажать стрелку вниз, чем искать букву "д" или кликать мышью
 
Можно так.
Владимир
 
Цитата
sokol92 написал:
Можно так.

Огромное спасибо.
Страницы: 1
Наверх