Страницы: 1
RSS
Связанный выпадающий список
 
Необходимо чтобы при выборе значения в комбобоксе, автоматически подставлялось значение из листа в текстбокс. Пример во вложении.
 
Код формы  
 
Dim iLastRow As Long  
 
Private Sub ComboBox1_Change()  
TextBox1 = WorksheetFunction.VLookup(ComboBox1, Range("A1:B" & iLastRow), 2, False)  
End Sub  
 
Private Sub UserForm_Initialize()  
iLastRow = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row  
ComboBox1.RowSource = "A1:A" & iLastRow  
End Sub
 
Или так.
 
Поворчу: файл-пример никакого отношения к связанным выпадающим спискам не имеет: нет связанного списка.  
По вопросу: можно ещё делать так: в ComboBox загоняем два столбца и тогда в TextBox отображаем значение второго столбца из выбранной опции.
 
А можно как то ограничить поиск по столбцу А? Например до 5 строки.
 
{quote}{login=DOR}{date=28.12.2010 12:08}{thema=Связанный выпадающий список}{post}Необходимо чтобы при выборе значения в комбобоксе, автоматически подставлялось значение из листа в текстбокс. Пример во вложении.{/post}{/quote}  
 
 
Private Sub ComboBox1_Change()  
TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)  
 
End Sub  
 
 
 
Private Sub UserForm_Initialize()  
ComboBox1.List = [a1:b5].Value
 
End Sub
Спасибо
 
{quote}{login=DOR}{date=28.12.2010 12:37}{thema=}{post}А можно как то ограничить поиск по столбцу А? Например до 5 строки.{/post}{/quote}  
Можно - указав не столбец целиком, а диапазон ячеек, как это сделано у Казанского.
 
Походу, короче уже не получится :)  
В св-вах комбобокса Boundcolumn=2  
 
Private Sub ComboBox1_Change()  
TextBox1 = ComboBox1  
End Sub  
 
Private Sub UserForm_Initialize()  
ComboBox1.RowSource = "A1:B" & Cells(Rows.Count, 1).End(xlUp).Row  
End Sub
 
Однако можно :)  
 
Private Sub ComboBox1_Change()  
TextBox1 = ComboBox1  
End Sub  
 
Private Sub UserForm_Initialize()  
ComboBox1.RowSource = [A1].CurrentRegion.Address
End Sub
 
{quote}{login=Казанский}{date=28.12.2010 12:48}{thema=}{post}Однако можно :){/post}{/quote}  
Тогда вообще инициализацию убираем, а RowSource в свойствах :-)
 
Ух сколько решений, спасибо всем кто предложил свои варианты.  
 
P.S. Прошу прощения за не совсем правильную формулировку вопроса.
 
Как тут:  
Private Sub ComboBox1_Change()  
TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)  
End Sub  
 
Private Sub UserForm_Initialize()  
ComboBox1.List = [a1:b5].Value
End Sub  
 
или тут:  
Private Sub ComboBox1_Change()  
TextBox1 = ComboBox1  
End Sub  
 
Private Sub UserForm_Initialize()  
ComboBox1.RowSource = [A1].CurrentRegion.Address
End Sub  
 
можно заставить выбирать нужные данные с листа "Списки"?
 
А еще задать условие, что есть Sheets("Списки").Cells("D1") = "К", то выбираем столбец B, иначе С.
 
{quote}{login=DOR}{date=28.12.2010 08:27}{thema=}{post}Как тут:  
Private Sub ComboBox1_Change()  
TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)  
End Sub  
 
Private Sub UserForm_Initialize()  
ComboBox1.List = [a1:b5].Value
End Sub  
 
или тут:  
Private Sub ComboBox1_Change()  
TextBox1 = ComboBox1  
End Sub  
 
Private Sub UserForm_Initialize()  
ComboBox1.RowSource = [A1].CurrentRegion.Address
End Sub  
 
можно заставить выбирать нужные данные с листа "Списки"?{/post}{/quote}  
 
Разобрался сам.
 
Private Sub UserForm_Initialize()  
If Sheets("Списки").Range("D1") = "К" Then  
ComboBox2.List = Sheets("Списки").Range("a2:b24").Value  
Else  
ComboBox2.List = Sheets("Списки").Range("a1:c24").Value  
End If  
End Sub  
 
как отсюда ComboBox2.List = Sheets("Списки").Range("a1:c24").Value исключить столбец "В"?
 
ComboBox2.List = union(Sheets("Списки").Range("a1:a24"),Sheets("Списки").Range("c1:c24")).value
Спасибо
 
используйте    
with  
 
 
Private Sub UserForm_Initialize()  
with Sheets("Списки")  
If .Range("D1") = "К" Then  
ComboBox2.List = .Range("a2:b24").Value  
Else  
ComboBox2.List = union(.Range("a1:a24"),.Range("c1:c24")).value  
End If  
end with  
End Sub
Спасибо
 
Это полностью код:  
Private Sub ComboBox2_Change()  
TextBox13 = ComboBox2.List(ComboBox2.ListIndex, 1)  
End Sub  
 
Private Sub UserForm_Initialize()  
If Sheets("Списки").Range("D1") = "К" Then  
ComboBox2.List = Sheets("Списки").Range("a2:b24").Value  
Else  
ComboBox2.List = Union(Sheets("Списки").Range("a1:a24"), Sheets("Списки").Range("c1:c24")).Value  
End If  
End Sub  
 
R Dmitry, после добавления    
ComboBox2.List = union(Sheets("Списки").Range("a1:a24"),Sheets("Списки").Range("c1:c24")).value    
код стал ругаться на это  
TextBox13 = ComboBox2.List(ComboBox2.ListIndex, 1)
 
может быть не пробовал:)  
оставьте свой вариант и замените 1 на 2  
TextBox13 = ComboBox2.List(ComboBox2.ListIndex, 1)  
 
 
TextBox13 = ComboBox2.List(ComboBox2.ListIndex, 2)
Спасибо
 
тоже ошибка.
 
{quote}{login=DOR}{date=28.12.2010 10:31}{thema=}{post}тоже ошибка.{/post}{/quote}  
 
 
так я ж Вам написал оставьте полностью свой код, и поменяйте только одну цифру
Спасибо
 
Оставлял, все равно ошибка :)
 
Private Sub ComboBox1_Change()  
If Sheets("Лист1").Range("C1") = "K" Then  
TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)  
Else  
TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 2)  
End If  
End Sub  
Private Sub UserForm_Initialize()  
ComboBox1.List = Sheets("Лист1").Range("a1:c5").Value  
End Sub
Спасибо
 
Вот блин, хотел ведь так написать. Спасибо, R Dmitry.
Страницы: 1
Читают тему
Наверх