Искать в столбце (несколько строк) только первые 6 символов каждой строки? Excel VBA - PullRequest
0 голосов
/ 05 апреля 2020

Я работаю над проектом в VBA на основе Excel. В Excel есть лист, содержащий информацию в нескольких столбцах. Используя приведенный ниже код, я могу выполнить поиск в одном столбце и распечатать остальные данные в моей пользовательской форме.

Первый вопрос: столбец, в котором я хочу выполнить поиск ( столбец 1) содержит 8 символов, но нужно искать только первые 6 символов. Будет ли это возможно в любом случае? Я попытался использовать .Characters(1, 6), как показано в коде ниже, но он не работает.

Sheet1 содержит около 5500 строк данных.

Второй вопрос: Я хотел бы распечатать данные строки в нескольких текстовых полях, как показано в коде ниже. TextBox2 должен содержать результат поиска в моем первом вопросе (столбец 1), но опять же только первые 6 символов. Как бы я справился с этим sh? 1012 *

Надеюсь, вы мне поможете.

Public Sub Search_Owner()

    Dim PrsNr As String
    Dim Found As Range

    PrsNr = TextBox1.value

    Worksheets("Sheet1").Activate

    Set Found = Worksheets("Sheet1").Range("A2", Range("A" & Rows.Count).End(xlUp)).Characters(1, 6).Find(PrsNr, Lookat:=xlWhole)

    If Found Is Nothing Then
    MsgBox "Nothing found", vbCritical
    Else

    TextBox2 = Cells(Found.Row, 1).value
    TextBox3 = Cells(Found.Row, 5).value
    TextBox4 = Cells(Found.Row, 8).value

    End If

End Sub

1 Ответ

1 голос
/ 05 апреля 2020
  1. Да, вы можете использовать "*" подстановочный знак в вашем .Find методе. Подробнее об этом
  2. Да, используя функцию Left(). Подробнее об этом

Вот как:

Public Sub Search_Owner()
    Dim PrsNr As String
    Dim Found As Range
    PrsNr = TextBox1.Value
    Set Found = Worksheets("Sheet1").Range("A2", Range("A" & Rows.Count).End(xlUp)).Find(PrsNr & "*", Lookat:=xlWhole)
    If Found Is Nothing Then
        MsgBox "Nothing found", vbCritical
    Else
        TextBox2 = Left$(Cells(Found.Row, 1).Value, 6)
        TextBox3 = Left$(Cells(Found.Row, 5).Value, 6)
        TextBox4 = Left$(Cells(Found.Row, 8).Value, 6)
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...