Найти одну и ту же строку в двух разных ячейках, Excel VBA - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь найти строковое значение в двух разных ячейках, но безрезультатно.Возможно, что-то связано с направлением поиска.Код находит строку в первой ячейке, но никогда во второй ячейке (ячейки не являются смежными) ??

См. Выдержку из кода:

Dim aCell As Range, bCell, where1, where2
    lastarr = Worksheets("Locations").Range("C50").End(xlUp).Row - 1
    If lastarr < 1 Then GoTo end4
    Dim whatar()
    ReDim Preserve whatar(lastarr)
    where1 = .Cells(Application.Caller.Row, 4).Address _
             (RowAbsolute:=False, ColumnAbsolute:=False)
    where2 = .Cells(Application.Caller.Row, 9).Address _
             (RowAbsolute:=False, ColumnAbsolute:=False)
    For i = 1 To lastarr
        whatar(i) = Trim(Worksheets("Locations").Cells(i + 1, 3))
        Set aCell = .Range(where1).Find(What:=whatar(i), LookIn:=xlValues, _
            LookAt:=xlPart, MatchCase:=False)
        Set bCell = .Range(where2).Find(What:=whatar(i), LookIn:=xlValues, _
            LookAt:=xlPart, MatchCase:=False)
        rr = Application.Caller.Row
        If Not bCell Is Nothing Then Stop
        'If rr = 439 And i = 3 Then Stop
        If Not aCell Is Nothing Or Not bCell Is Nothing Then  
            gekry = True   '======= trigger!! =========
            'Stop
        End If
    Next

1 Ответ

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

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

Dim strFirstFind As String
Dim cll As Range, rng As Range

With ActiveSheet.Range("A1:X100")
    Set cll = .Find("X", LookIn:=xlValues)
    If Not cll Is Nothing Then
        Set rng = cll
        strFirstFind = cll.Address
        Do
            Set rng = Union(rng, cll)
            .Range(cll.Address).Activate
            Set cll = .FindNext(cll)

        Loop While Not cll Is Nothing And cll.Address <> strFirstFind
    End If

    Debug.Print rng.Address

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