2015-09-24 5 views
0

Это мой первый пост, и я новичок в использовании кода VBA в excel.Заполнение поля списка с диапазоном, основанным на выборе поля со списком в форме пользователя - Excel

Я ищу простейший способ понять и использовать код, чтобы сделать мою пользовательскую форму функциональной. Я ищу, чтобы иметь поле со списком с X количеством выбранных. После выбора выделения из выпадающего списка я хочу иметь окно списка, которое отображает определенный диапазон результатов на основе этого выбора. В поисках ответа на это все, что я нахожу, отличается и кажется сложным. Было бы замечательно, что простой оператор If/Then должен быть достаточным для использования правильных значений и свойств.

Чтобы определить, что вы видите ниже, у меня есть один лист (sheet1). На этом листе находятся два столбца. Столбец А, названный «Письма» и столбец «B», названный «Числа». В столбце A диапазон A2 = A, A3 = B, A4 = C, A5 = D. В столбце B диапазон B2 = 1, B3 = 2, B4 = 3, B5 = 4.

Я хотел бы диапазон А2, когда выбран ComboBox1 для отображения диапазона В2 в ListBox1. Как я сказал, я хотел бы иметь возможность использовать и понимать простейший способ кодирования для этого.

Здесь пример моего кода с помощью этого процесса мышления.

Private Sub ComboBox1_Change() 
    If Me.ComboBox1.Value = "A" Then 
     ListBox1.Value = Range(Sheet1!B2) 
    End If 

End Sub 

Теперь, очевидно, приведенный выше код не работает так что любое направление было бы весьма признателен. Спасибо

+0

ли идентификаторы уникальны? – skkakkar

+0

, если вы хотите отредактировать данные, относящиеся к идентификаторам, тогда может быть предпочтительнее загрузить его в TextBox. – skkakkar

ответ

0

Я не уверен, хотите ли вы, чтобы колонка А заполнила поле со списком динамическим или нет? В качестве быстрой демонстрации ...

В режиме разработки щелкните правой кнопкой мыши поле со списком> Свойства> Разное>, а затем установите ListFillRange на A2: A5. Это заполнит поле со списком данных из этого диапазона. Дважды щелкните поле со списком, чтобы получить доступ к экрану кода. Адаптировать следующую логику в соответствии с вашими собственными именами управления:

Private Sub ComboBox1_Change() 
    If ComboBox1.Value = "A" Then 
    ListBox1.AddItem ActiveSheet.Range("b2") 
    End If 
End Sub 
0

А => 1

B => 2

ComboBox1.ListIndex даст вам индекс выбранного элемента (Base 0)

Таким образом, мы можем написать, как

ListBox1.Value = Range ("B" & (ComboBox1.ListIndex + 2)). Значение

0

Я не очень уверен, что вы хотели, но, учитывая, что ваш UserForm содержит ComboBox с именем ComboBox1 и ListBox с именем listbox1:

Private Sub ComboBox1_Change() 
    Dim r As Range 
    Set r = [Sheet1!B2] 
    ListBox1.Clear 
    ListBox1.AddItem r.Offset(ComboBox1.ListIndex).Value 
End Sub 

Private Sub UserForm_Initialize() 
    Dim r As Range 
    Set r = [Sheet1!A2:A5] 
    ComboBox1.List = r.Value 
End Sub 

Вы можете добавить еще один уровень косвенности, если столбец B содержит диапазоны вместо номера по remplacing:

ListBox1.Clear 
ListBox1.AddItem r.Offset(ComboBox1.ListIndex).Value 

по

ListBox1.List = Range(r.Offset(ComboBox1.ListIndex).Value).Value 
0

процесс затем меня Summa ниже. UserForm Инициализировать стандартное отношение между ComboBox и списком ListBox и Worksheet. Хотя я получил общий характер для более общей ситуации в списке адресов контактов, который может быть полезен многим людям.

Private Sub UserForm_Initialize() 
    Set rData = ActiveSheet.Range("A1").CurrentRegion 
    Me.ComboBox1.List = rData.Offset(1).Value 
    Me.ListBox1.ColumnCount = 6 
    Me.ListBox1.List = Me.ComboBox1.List 
End Sub 

ComboBox Change Routine имеет следующий код.

Private Sub ComboBox1_Change() 
    Me.ListBox1.ListIndex = Me.ComboBox1.ListIndex 
End Sub 

Существует кнопка закрытия, чтобы закрыть форму.

Private Sub cmdClose_Click() Выгрузка Me End Sub

Общие заявления следующим образом.

Option Explicit 
Dim rData As Range 

Образец каталога адресов Cotact приведен ниже.

[![Contact address directory][1]][1] 

enter image description here

Пример файла можно скачать здесь https://www.dropbox.com/s/w5rnp8omkl5u0eu/sample_2409c.xlsm?dl=0

Смежные вопросы