Как сопоставить только часть значения ячейки вместо точного соответствия в VBA для Excel? - PullRequest
0 голосов
/ 07 ноября 2019

Я уже написал скрипт, который отлично работает для точного соответствия, но я хотел бы переписать его, чтобы позволить пользователю вводить только часть одного из критериев. userform должен по-прежнему распознавать, из какой строки он получен на другом листе, и заполнять ячейки соответствующей информацией. Строка должна содержать как txtsearch, так и txtname, чтобы найти правильную строку.

Пример значений для txtsearch: Instuctor, Mentor и т. Д.

Пример значений для txtname: Borkowski, Villarreal и т. Д.

Это то, что у меня сейчас:

Private Sub CommandButton1_Click()
Dim ws As Worksheet, cel As Range
    Set ws = Sheets("The Goods")
    For Each cel In ws.Cells(2, 2).Resize(ws.Cells(Rows.Count, 2).End(xlUp).Row).Cells
        If cel.Value = Me.txtname.Value And cel.Offset(, 2).Value = Me.txtsearch.Value Then
           currentrow = cel.Row
            Me.txt1.Value = cel.Offset(, 3).Value
            Me.txt2.Value = cel.Offset(, 1).Value
            Me.txt3.Value = cel.Offset(, 4).Value
            Me.txt4.Value = cel.Offset(, 5).Value
            Me.txt5.Value = cel.Offset(, 6).Value
            Me.txt6.Value = cel.Offset(, 7).Value
            Me.txt7.Value = cel.Offset(, 8).Value
            Me.txt8.Value = cel.Offset(, 9).Value
            Me.txt9.Value = cel.Offset(, 10).Value
            Me.txt10.Value = cel.Offset(, 11).Value
            Me.txt11.Value = cel.Offset(, 12).Value
        End If
    Next cel
End Sub

1 Ответ

1 голос
/ 08 ноября 2019

Если вы имеете в виду «только часть», то вам нужна функция instr. См. Ниже ...

If InStr(1, cel.Value, Me.txtname.Value, vbTextCompare) > 0 And  _ 
   InStr(1, cel.Offset(, 2).Value, Me.txtsearch.Value) > 0 Then

Если бы вы имели в виду только слева, это будет работать:

If Left(cel.Value, Len(Me.txtname.Value)) = Me.txtname.Value And _ 
   Left(cel.Offset(, 2).Value, Len(Me.txtname.Value)) = Me.txtname.Value Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...