Добрый день. Имеется форма с поиском по первой букве. Если вводить по коду или названию станции ,то не отображаются данные столбец 3. Если в поле текста ввести * ,то все колонки отображаются. Как исправить ,код что бы при вводе кода или названия станции отображались все столбцы в листбоксе?
Добрый день. Имеется форма с поиском по первой букве. Если вводить по коду или названию станции ,то не отображаются данные столбец 3. Если в поле текста ввести * ,то все колонки отображаются. Как исправить ,код что бы при вводе кода или названия станции отображались все столбцы в листбоксе?parovoznik
Private iArr As Variant Private Sub Btn_Exit_Click(): Unload Me: End Sub 'Кнопка Закрыть Private Sub UserForm_Initialize() With Worksheets("справочник") iArr = .Range(.Cells(2, 1), .Cells(.Rows.Count, 3).End(xlUp)).Value End With End Sub Private Sub txtb_Search_Change() Dim iText$, iCount& On Error Resume Next ' Me.Width = 295 iText = Trim(txtb_Search.Value) With List_РезультатыПоиска Select Case iText Case "": .Clear Label_РезультатыПоиска.Caption = "Введите текст для поиска нужной записи, или * для отображения всех записей БД" Case "*": .List = iArr Label_РезультатыПоиска.Caption = "Общее кол-во записей в базе данных: " & UBound(iArr) Case Else: .Clear For iCount = 1 To UBound(iArr) If InStr(1, iArr(iCount, 1), iText, vbTextCompare) > 0 Then .AddItem iArr(iCount, 1) .List(.ListCount - 1, 1) = iArr(iCount, 2) .List(.ListCount - 1, 2) = iArr(iCount, 3) End If Next Label_РезультатыПоиска.Caption = "Найдено записей: " & .ListCount _ & " (Общее количество записей в базе данных: " & iCount - 1 & ")" End Select End With End Sub
[/vba]
Решение. [vba]
Код
Private iArr As Variant Private Sub Btn_Exit_Click(): Unload Me: End Sub 'Кнопка Закрыть Private Sub UserForm_Initialize() With Worksheets("справочник") iArr = .Range(.Cells(2, 1), .Cells(.Rows.Count, 3).End(xlUp)).Value End With End Sub Private Sub txtb_Search_Change() Dim iText$, iCount& On Error Resume Next ' Me.Width = 295 iText = Trim(txtb_Search.Value) With List_РезультатыПоиска Select Case iText Case "": .Clear Label_РезультатыПоиска.Caption = "Введите текст для поиска нужной записи, или * для отображения всех записей БД" Case "*": .List = iArr Label_РезультатыПоиска.Caption = "Общее кол-во записей в базе данных: " & UBound(iArr) Case Else: .Clear For iCount = 1 To UBound(iArr) If InStr(1, iArr(iCount, 1), iText, vbTextCompare) > 0 Then .AddItem iArr(iCount, 1) .List(.ListCount - 1, 1) = iArr(iCount, 2) .List(.ListCount - 1, 2) = iArr(iCount, 3) End If Next Label_РезультатыПоиска.Caption = "Найдено записей: " & .ListCount _ & " (Общее количество записей в базе данных: " & iCount - 1 & ")" End Select End With End Sub