#excel #vba #vlookup
#excel #vba #ВПР
Вопрос:
Я создал таблицу1, которая использует пользовательскую форму для добавления новой строки, нажав кнопку (Добавить новую запись), то, что я хочу в UderForm как только я выберу имя из списка со списком (comboName), (txtDiscipline) будет автоматически сгенерирован (появится автоматически) на основе таблицы2, который указывает для каждого именидисциплина.
Пользовательская форма для добавления строк в таблицу1
Обновить:
Ответ №1:
Вы можете создать 2 подраздела в пользовательской форме и использовать метод поиска при изменении выпадающего списка. обратите внимание, что если у вас одинаковые имена в столбце F, это не сработает, и тогда вам нужно определить уникальный идентификатор для каждого элемента.
Private Sub comboName_Change()
Dim int_LR As Integer: int_LR = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row ' find last row of table
Dim str_Name As String: str_Name = Me.comboName ' look up this name
Dim rng_FindRange As Range ' search range
Set rng_FindRange = ActiveSheet.Range("F3:G" amp; int_LR).find(str_Name)
If Not rng_FindRange Is Nothing Then
Me.txtDiscipline = ActiveSheet.Cells(rng_FindRange.Row, 7)
Else ' If Not rng_FindRange Is Nothing
Me.txtDiscipline = "Name not found"
End If ' If Not rng_FindRange Is Nothing
End Sub
и когда пользовательская форма инициализируется
Private Sub UserForm_Initialize()
Dim int_LR As Integer: int_LR = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row ' find last row of table
Me.comboName.Style = fmStyleDropDownList ' combobox list style
For i = 3 To int_LR ' loop adding items to combobox
Me.comboName.AddItem ActiveSheet.Cells(i, 6)
Next i
End Sub
Комментарии:
1. Спасибо, это работает, но когда я закрываю пользовательскую форму, появляется сообщение as, и я не знаю точной причины этого сообщения. Я загружаю скриншот сообщения выше.
2. Попробуйте добавить код в событие userform_initialize: me.showmodal=false и перед завершением события comboname_Change установите rng_FindRange = ничего. вы также можете изменить событие comboname с change на keydown и привязать makro к запуску после keyreturn down.