Искать любой номер, например номер телефона - PullRequest
0 голосов
/ 01 февраля 2020

Как мне найти номер?

С помощью этого кода я не могу найти ни одного номера.

Private Sub TextBox1_Change()

If Len(TextBox1.Value) = 0 Then
    Sheet1.AutoFilterMode = False
Else
    If Sheet1.AutoFilterMode = True Then
        Sheet1.AutoFilterMode = False
    End If
    Sheet1.Range("b7:g" & Rows.Count).AutoFilter field:=1, Criteria1:="*" & _
      TextBox1.Value & "*"
End If

End Sub

1 Ответ

0 голосов
/ 01 февраля 2020

Вы можете создать свои собственные критерии выбора, используя регулярное выражение, которое обрабатывает все записи как строки. Это, вероятно, OTT, но он дает вам большую гибкость, если она понадобится вам в будущем.

Private Sub TextBox1_Change()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.ActiveSheet

    Dim iLast As Long
    iLast = ws.Range("B" & Rows.Count).End(xlUp).Row

    ' create regex pattern
    Dim sPattern As String
    sPattern = CStr(TextBox1.Value)

    'create regex engine
    Dim Regex As Object
    Set Regex = CreateObject("vbscript.regexp")
    With Regex
      .Global = True
      .MultiLine = False
      .IgnoreCase = True
      .Pattern = sPattern
    End With

    ' build selection array
    Dim r As Long, i As Long, s As String, ar() As String
    ReDim ar(iLast)
    i = 0
    For r = 7 To iLast
       s = CStr(ws.Range("B" & r).Value)
       If Len(s) > 0 And Regex.test(s) Then
         ar(i) = s
         i = i + 1
       End If
    Next
    ReDim Preserve ar(i)

    ' apply filter
    If Len(TextBox1.Value) = 0 Then
        ws.AutoFilterMode = False
    Else
        ws.Range("B7:G" & Rows.Count).AutoFilter Field:=1, _
        Operator:=xlFilterValues, _
        Criteria1:=ar
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...