Excel VBA найти строку в строке - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть таблица с контактными данными (в каждой строке первый столбец представляет имя контакта), и у меня есть текстовое поле, в котором пользователь должен ввести имя контакта. Теперь я хочу сделать кнопку «Регистрация», чтобы зарегистрировать на другом листе имя контакта, как это указано в таблице, содержащей все детали.

Эта кнопка должна найти строку ввода пользователя в таблице контактных данных и вывести имя соответствующего контакта в данной ячейке на другом листе.

Я нашел несколько способов сделать это, но ни один из них, похоже, не работает с частично совпадающими результатами (например, пользователь вводит «Джон», но имя в списке - «Младший Джон»)

Как лучше всего использовать VBA в Excel?

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете использовать Instr для проверки частичных совпадений. Например, если пользовательский ввод - «Джон», и в одной из ячеек в списке есть «младший Джон», он найдет его.

Sub SearchNames()

    Dim book As Workbook
    Set book = ThisWorkbook

    Dim sheet As Worksheet
    Set sheet = book.Worksheets("Sheet1")

    Dim lastRow As Long
    lastRow = sheet.Cells(Rows.Count, "A").End(xlUp).Row

    Dim firstNamesRng As Range
    Set firstNamesRng = sheet.Range("A1:A" & lastRow)

    Dim userInputString As String
    userInputString = TextBox1.Value 'Passes the name entered by the user to the string

    Dim loopingCell As Range
    For Each loopingCell In firstNamesRng 'Loops through each cell in given range

        If InStr(loopingCell, userInputString) > 0 Then 'If Instr doesn't return "0" then do stuff

            Debug.Print "Found: " & loopingCell.Value

        End If

    Next

End Sub

Более подробную информацию о том, как работает функция instr, можно найти здесь: https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/instr-function

...