Я поставил эту проблему раньше, однако, я думаю, что это было слишком сложно, и я не очень хорошо ее объяснил. На этот раз я просто использую простой UserForm в качестве примера.Заполнение ListBox из критериев поиска, введенных в TextBox в Excel VBA
Я хочу заполнить ListBox, введя критерии поиска в текстовое поле.
У меня есть три колонки:
Колонка A = Номер Библиотечная карточка
Колонка B = зрачка Имя
Колонка C = Book Reference
У меня есть UserForm:
TextBox = txtlcn (для библиотеки Номер карты)
TextBox = txtpn (для зрачка Имя)
TextBox = txtbr (для справочника)
Command Кнопка = cmdfinddetails (Найти детали)
Что я хочу сделать, это изменить TextBox 'txtbr' в ListBox, так что я вижу, есть ли у ученика более одной книги, предоставленной им. Процесс будет:
- ученик входит в их библиотеке номер карты в TextBox «txtlcn» и щелчков по командной кнопке
- код будет искать имя этого ученика и все книги «cmdfinddetails» ссылки забронированы для них.
- Ссылка на книги будет отображаться в ListBox.
Я пробовал много вещей, связанных с RowSource, но всегда перечисляет ссылки каждого ученика на книгу. Ниже приведен пример кода.
Private Sub cmdfinddetails_Click()
Set xSht = Sheets("Library")
Lastrow = xSht.Range("A" & Rows.Count).End(xlUp).Row
strSearch = txtlcn.Text
Set aCell = xSht.Range("A1:A" & Lastrow).Find
(What:=strSearch, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing And txtpn.Value = "" Then
GoTo libcardrefvalid
Else
MsgBox "Oops! That Library Card does not exist. Please try again.", Title:="We LOVE Reading ;-)"
txtlcn.Value = ""
End If
Exit Sub
libcardrefvalid:
row_number = 0
Do
DoEvents
row_number = row_number + 1
item_in_review = Sheets("Library").Range("A" & row_number)
If item_in_review = txtlcn.Text Then
txtpn.Text = Sheets("Library").Range("B" & row_number)
txtbr.Text = Sheets("Library").Range("C" & row_number)
End If
Loop Until item_in_review = ""
End Sub
Любая помощь была бы принята с благодарностью.
спасибо.
Я прокрутил колонку, чтобы найти номер карточки библиотеки и соответствующие результаты и сохранить их в массиве. Затем поместите массив в список. – Sam
Спасибо Сэм. Извините, я относительно новичок в VBA, у вас есть пример того, как я могу сделать, как вы предложили? – Alba1970