VBA FindNext не находит все вхождения - PullRequest
0 голосов
/ 03 октября 2019

У меня проблема с функцией findNext в VBA в Excel.

У меня есть две вкладки: «Tab A» и «Tab B». В моей первой вкладке у меня есть все различные элементы в столбце (банан, яблоко, груша и т. Д.), И идея для меня состоит в том, чтобы подсчитать, сколько раз оно появилось во второй вкладке. Например: я знаю, что банан появляется во второй вкладке 150 раз.

Я использовал следующую функцию:

Function Test()
    Conf = "Banana"
    Dim rgFound As Range
    CptTtl = 0
    With Worksheets("Tab B").Range("L2:L500")
        Set rgFound = .Find(Conf)
        If Not rgFound Is Nothing Then
            firstAddress = rgFound.Address
            CptTtl = CptTtl + 1
            Do
                Set rgFound = .FindNext(rgFound)
                CptTtl = CptTtl + 1
            Loop While Not rgFound Is Nothing And rgFound.Address <> firstAddress
            CptTtl = CptTtl - 1
        End If
    End With
    MsgBox CptTtl
End Function

Итак, как я только что объяснил выше, когда я фильтрую вручную, янайти 150 бананов, но когда я использую эту функцию, я нахожу только 118, и я понятия не имею, почему.

У кого-нибудь есть идеи?


Я наконец нашел решение, здесьэто решение:

Это было просто добавить это LookIn:=xlValues, потому что я использовал формулы и хотел найти значение

Function Test()
    Conf = "Banana"
    Dim rgFound As Range
    CptTtl = 0
    With Worksheets("Tab B").Range("L2:L500")
        Set rgFound = .Find(Conf, LookIn:=xlValues)
        If Not rgFound Is Nothing Then
            firstAddress = rgFound.Address
            CptTtl = CptTtl + 1
            Do
                Set rgFound = .FindNext(rgFound)
                CptTtl = CptTtl + 1
            Loop While Not rgFound Is Nothing And rgFound.Address <> firstAddress
            CptTtl = CptTtl - 1
        End If
    End With
    MsgBox CptTtl
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...