Поиск значений в базе данных по первым буквам при вводе на листе (как в 1С)
Предположим, на листе есть большая база данных. Поиск по базе можно организовать с помощью поля (текстбокс) для ввода интересующего значения и обновляющегося по мере ввода списка (листбокс) подходящих значений: view plainprint? 1. Option Compare Text 2. 3. Private Sub TextBox1_Change() 4. Dim x, i As Long, txt As String, lt As Long, s As String 5. txt = TextBox1.Text: lt = Len(TextBox1.Text) 6. If lt = 0 Then Exit Sub 7. 8. x = Range("A1", Cells(Rows.Count, 1).End(xlUp)).Value 9. For i = 1 To UBound(x, 1) ' поиск по первым буквам 10. If txt = Mid(x(i, 1), 1, lt) Then s = s & "~" & x(i, 1) 11. Next i 12. 'For i = 1 To UBound(x, 1) 'поиск по любому вхождению 13. ' If InStr(x(i, 1), txt) Then s = s & "~" & x(i, 1) 14. 'Next i 15. ListBox1.List = Split(Mid(s, 2), "~") 16. End Sub view plainprint? 1. Private Sub ListBox1_Click() 2. If ListBox1.ListIndex = -1 Then Exit Sub 3. Columns(1).Find(ListBox1, lookat:=xlWhole).Select 4. End Sub Можно также использовать форму (см. файл-пример) |
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.