Как сделать автоматически сгенерированный текст в пользовательской форме на основе таблицы?

Я создал таблицу 1, которая использует UserForm для добавления новой строки, нажав кнопку (Добавить новую запись). Что я хочу в UderForm, как только я выберу имя из Combobox (comboName), (txtDiscipline) будет автоматически сгенерировано (появится автоматически ) на основе таблицы Table2, в которой для каждого имени указана дисциплина.

Стол1 и Стол2

Пользовательская форма для добавления строк в Table1

Обновлять:

Сообщение после закрытия пользовательской формы

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
115
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" & 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

Спасибо, это работает, но когда я закрываю пользовательскую форму, появляется сообщение, и я точно не знаю причину этого сообщения. Выкладываю скриншот сообщения выше.

Maya 23.12.2020 13:04

Попробуйте добавить код в событие userform_initialize: me.showmodal=false и перед завершением события comboname_Change установите rng_FindRange = ничего. Вы также можете изменить событие comboname с изменения на нажатие клавиши и привязать макрос к запуску после нажатия клавиши.

Tomasz 23.12.2020 13:15

Другие вопросы по теме