Страницы: 1
RSS
В форме в КомбоБоксе не выводится список значений самого последнего диапазона.
 
 Добрый день. Всех форумчан поздравляю с праздником и хорошей погодой. Желаю всем здоровья, денег, времени, удачи всем.
Ну и вопрос, конечно.
В форме в КомбоБоксе№2 не выводятся значения самого последнего диапазона.
Т.е. в  КомбоБоксе№1 выбираем "o". В  КомбоБоксе№2 должен появиться список значений диапазона "o". А этого не происходит.
Остальные выводятся нормально.
Пробовал в коде на обновление КомбоБокса№1 менять местами последний и предпоследний диапазон--при этом перестаёт выводится именно тот диапазон, который расположен в коде последним.
Что это такое и как исправить?
Изменено: iNic - 12.04.2015 13:02:23
 
Вы пропустили Else:
Код
If ComboBox1.Value Like "n" Then
ComboBox2.RowSource = "n"
Else
If ComboBox1.Value Like "o" Then
ComboBox2.RowSource = "o" 
 
Но я бы вместо кучи If и Else использовал конструкцию Select Case - End select
 
Или Find по строке и во второй КомбоБокс диапазон под найденным значением.  
 
Цитата
Вы пропустили Else:
Елки, ведь так просто...
Спасибо большое.
Про второе--я уж так буду. Спасибо.
 
Я бы посоветовал изменить таблицу на "умную" или "резиновую". Тогда можно будет сделать проще:
Код
Private Sub ComboBox1_Change()
ComboBox2.RowSource = "Таблица1[" & ComboBox1.Text & "]"
End Sub

Изменено: МВТ - 12.04.2015 13:22:05
 
Спасибо.
 
А RowSource я вообще стараюсь не использовать: несколько раз нарывался на неприятности... Или забираю диапазон в массив и его в List, или перебираю циклом (AddItem)
 
Вот без переделки таблицы и покороче код:
Код
Private Sub ComboBox1_Change()
Dim Rng As Range, LastRow As Long, Arr()
    Set Rng = Rows(4).Find(what:=Me.ComboBox1, LookIn:=xlValues, lookAt:=xlWhole)
    If Not Rng Is Nothing Then
        LastRow = Cells(Rows.Count, Rng.Column).End(xlUp).Row
        Arr = Range(Cells(5, Rng.Column), Cells(LastRow, Rng.Column)).Value
        Me.ComboBox2.List = Arr
    End If
End Sub
Страницы: 1
Наверх