Функция закрывается, когда FIND не возвращает результат - PullRequest
0 голосов
/ 15 марта 2011

Я хочу иметь свою собственную функцию, которая позволяет искать одну и ту же область на нескольких листах. Моя идея состояла в том, чтобы просмотреть набор листов (здесь все листы в рабочей книге) и использовать Find для поиска в этой области. Теперь, если поиск был успешным на первом листе, я не хочу, чтобы результат был перезаписан из неудачных поисков на следующем, там для условия if.

Function SheetsFind(LookUpValue As Integer) As Variant
    Dim SearchRange As Range

    For Each WS In Sheets
        Set SearchRange = WS.Range("A1:B6")

        If (SearchRange.Find(LookUpValue, LookIn:=xlValues, LookAt:=xlWhole) <> "Nothing") Then
            SheetsFind = SearchRange.Find(LookUpValue, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value
        End If
    Next WS

End Function

Проблема теперь в том, что если поиск в условии не выполнен, функция остается, и я получаю ошибку #value.

Почему моя функция не просто продолжает следующую итерацию?

1 Ответ

1 голос
/ 15 марта 2011

Range.Find возвращает другой объект диапазона, по этой причине у вас возникают проблемы.

Попробуйте это:

Function SheetsFind(LookUpValue As Integer) As Variant

    Dim SearchRange As Range
    Dim oResult As Excel.Range
    Dim ws As Worksheet

    For Each ws In Sheets
        Set SearchRange = ws.Range("A1:B6")

        Set oResult = SearchRange.Find(LookUpValue, LookIn:=xlValues, LookAt:=xlWhole)

        If Not oResult Is Nothing Then

            SheetsFind = oResult.Offset(0, 1).Value

        End If

    Next ws

End Function
...