Используйте два текстовых поля для фильтрации списка - PullRequest
0 голосов
/ 27 декабря 2018

Я делаю живой фильтр в списке и пытаюсь добавить еще одно текстовое поле в фильтр.

У меня есть одно текстовое поле, StoreBox.Когда я набираю число для поиска в строке C, он возвращает 8 столбцов из этой строки.У меня это работает.

Но мне нужно добавить дату поиска.Мне нужно иметь возможность искать номер магазина и дату отдельно или вместе.Так что он вернется, если оба находятся в ряду ... или если я просто наберу один, он вернется для одного критерия.

Итак, Storebox и DateBox - это текстовые поля, по которым я фильтрую.Ниже приведен код, который я использую, но все, что я пробовал, не работает;Я не могу заставить второго работать.

Кто-нибудь знает, как я могу изменить код, чтобы заставить это работать?

Private Sub StoreBox_Change()
    Sheets("Data").Activate
    Dim rw
    Dim strText As String

    strText = LCase(StoreBox.Text)
    dateText = LCase(DateBox.Text)
    Dim rng As Range
    Set rng = Range("C9:C5000")
    With ResultsBox
        .RowSource = ""
        .ColumnCount = 8
        For Each rw In rng.Rows
            If InStr(LCase(Cells(rw.Row, 3)), strText) Or InStr(LCase(Cells(rw.Row, 3)), strText) Then
                .AddItem Cells(rw.Row, 1).Value
                .List(ResultsBox.ListCount - 1, 0) = Cells(rw.Row, 2).Value
                .List(ResultsBox.ListCount - 1, 1) = Cells(rw.Row, 3).Value
                .List(ResultsBox.ListCount - 1, 2) = Cells(rw.Row, 4).Value
                .List(ResultsBox.ListCount - 1, 3) = Cells(rw.Row, 5).Value
                .List(ResultsBox.ListCount - 1, 4) = Cells(rw.Row, 6).Value
                .List(ResultsBox.ListCount - 1, 5) = Cells(rw.Row, 7).Value
                .List(ResultsBox.ListCount - 1, 7) = Cells(rw.Row, 9).Value
            End If

1 Ответ

0 голосов
/ 27 декабря 2018

Так как DateBox.Text должен фильтровать столбец 5, тогда это должно решить проблему:

If InStr(LCase(Cells(rw.Row, 3)), strText) Or InStr(LCase(Cells(rw.Row, 5)), dateText) Then

Я бы предпочел использовать Instr параметр сравнения над LCase()

If InStr(1, Cells(rw.Row, 3).Value, strText, vbTextCompare) Or InStr(1, Cells(rw.Row, 5).Value, dateText, vbTextCompare) Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...