Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
1

Быстрый поиск в текстбоксе

15.10.2016, 16:27. Показов 1488. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
На форме расположен текстбокс и листбокс. В поле текстбокса вводим буквы и в листбоксе отображается результат. Все работает , но у меня вопрос,как изменить код что бы поиск работал если вводить не первые слова, а и последующие.
Например: инструменты медицинские.
Сейчас поиск работает если вводить "инструменты" ,а когда ввести медицинские ,то поиск неосуществляется.
Прошу помочь.
Вложения
Тип файла: rar Поиск _.rar (19.4 Кб, 7 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2016, 16:27
Ответы с готовыми решениями:

Быстрый поиск в файлах TXT
Добрый вечер уважаемые форумчане. Мне необходим поиска части строки в файлах. Сделал код, но он...

Вывести сообщение что число в текстбоксе один меньше числа в текстбоксе
Вывести сообщение о том что число в текстбоксе один меньше числа в текстбоксе

В указанном текстбоксе разместить поиск по марке телефона
Всем лучшим знатокам Visual Basic доброго времени суток !!! Помогите. Необходимо в указаном...

Быстрый поиск
Здравствуйте. Нужно выполнить поиск i-го вхождения заданного элемента в исходном наборе чисел....

13
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
15.10.2016, 18:09 2
Один из возможных вариантов :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private iArr As Variant
 
Private Sub UserForm_Initialize()
    With Worksheets("Данные")
         iArr = Application.Transpose(.Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)))
    End With
End Sub
 
Private Sub txtb_Search_Change()
    Dim iText$: iText = Trim(txtb_Search.Value)
    If iText = "" Then List_РезультатыПоиска.Clear: Exit Sub
 
    List_РезультатыПоиска.List = Filter(iArr, iText, True, vbTextCompare)
End Sub
1
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
16.10.2016, 07:47  [ТС] 3
pashulka,Вы как всегда отвечаете на 5+
Можно добавить комментарии по коду и еще вопрос как подкорректировать код что бы в поле поиска ввести * и отображалась вся база данных.
Спасибо.
Вложения
Тип файла: rar Поиск _2.rar (22.5 Кб, 8 просмотров)
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
16.10.2016, 09:25 4
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private iArr As Variant
 
Private Sub UserForm_Initialize()
    With Worksheets("Данные")
         iArr = Application.Transpose(.Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)))
    End With
End Sub
 
Private Sub txtb_Search_Change()
    Dim iText$: iText = Trim(txtb_Search.Value)
    Select Case iText
        Case "":   List_РезультатыПоиска.Clear
        Case "*":  List_РезультатыПоиска.List = iArr
        Case Else: List_РезультатыПоиска.List = Filter(iArr, iText, True, vbTextCompare)
    End Select
End Sub

Что касается комментариев, то :

VB(A) функция Filter работает с одномерным массивом, поэтому, приходится использовать транспонирование
VB(A) функция Trim наличествует для того, чтобы после ввода пробела, Вы не получили список оборудования, содержащего один(или более) пробелов
0
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
16.10.2016, 14:06  [ТС] 5
Благодарю Вас.
0
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
20.10.2016, 10:35  [ТС] 6
Доброе утро.
В процессе работы возникла небольшая проблема. При вводе по первым буквам надо ,что бы в листбоксе еще отображался столбец с остатками.
Заранее благодарен.
Вложения
Тип файла: rar Поиск _3.rar (18.4 Кб, 4 просмотров)
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
20.10.2016, 15:51 7
Тестируйте
Вложения
Тип файла: zip Поиск3.zip (14.8 Кб, 16 просмотров)
0
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
21.10.2016, 00:09  [ТС] 8
pashulka,здорово все работает. .
Я добавил еще подсчет количества найденных записей и Общее количество записей в базе данных,но подсчет ведется неправильно.
Если в текстбокс введена * ,то текст такой получается :"Найдено записей:21(общее количество записей в базе данных :21". Здесь все правильно.
Если например ввести букву "А",то текст такой должен получится :"Найдено записей : 15(общее количество записей в базе данных : 21).
Как подсчитать сколько найдено записей?
Заранее благодарен.
Вложения
Тип файла: rar Поиск 3.1.rar (23.1 Кб, 5 просмотров)
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
21.10.2016, 09:24 9
Вообще-то, ответ на Ваш вопрос есть в примере Поиск3.zip

Visual Basic
1
MsgBox List_РезультатыПоиска.ListCount
P.S. Но можно использовать и переменную, хотя в этом, пока нет необходимости.
0
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
21.10.2016, 10:15  [ТС] 10
pashulka, спасибо за отклик по моей теме.
Правильно я эту строчку кода написал.Но если брать поиск по первой букве,то отображается несколько строк и отображается цифра , а как подкорректировать ,что бы отображало общее количество записей в базе данных
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
21.10.2016, 12:28 11
Visual Basic
1
2
3
4
5
6
7
8
Private iArr As Variant, iCount&
 
Private Sub UserForm_Initialize()
    With Worksheets("Данные")
         iArr = .Range(.Cells(2, 2), .Cells(.Rows.Count, 3).End(xlUp)).Value
         iCount = UBound(iArr)
    End With
End Sub
p.s. можно и без переменной iCount, просто каждый раз будете использовать UBound(iArr)
0
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
21.10.2016, 13:15  [ТС] 12
Нужно ,что бы например ввели букву А отображается список "Найдено записей : 15(общее количество записей в базе данных : 21). А выдает ,что общее количество записей в базе данных:15,а должно быть :21
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
21.10.2016, 13:50 13
...
Вложения
Тип файла: zip Поиск4.zip (15.5 Кб, 38 просмотров)
0
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
21.10.2016, 14:17  [ТС] 14
Все получилось.Благодарю..Тема закрыта.
0
21.10.2016, 14:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2016, 14:17
Помогаю со студенческими работами здесь

Быстрый поиск
Доброго суток дня! Собрал быстрый поиск, но почему то выдает ошибку ...

Быстрый поиск
Добрый день! Прошу Вас помочь хотя бы подсказкой в решении данной задачи. Для первых двух типов...

Быстрый поиск
function fast(&$mass, $dotC = 1) { $lmass = ; $rmass = ; for($i = 0; $i <...

Быстрый поиск
есть такой код <html> <head> <meta charset="utf-8"> <title>Сообщение</title> </head> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru