функция поиска VBA - PullRequest
       6

функция поиска VBA

1 голос
/ 15 июля 2011

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

Public Function ExceptionSearch(ByVal eString As String) As Boolean

Dim pRange As Range
Dim bDT As Boolean
Dim bSVR As Boolean
Dim bMB As Boolean

Workbooks("test.xlsx").Worksheets("worksheet").Activate

With Worksheets("worksheet").Range("a1:a5000")

Set pRange = .Find(eString, LookIn:=xlValues)

If pRange <> "" Then
bDT = True
Else
bDT = False
End If

End With


ExceptionSearch = bDT

End Function

Я получаю сообщение об ошибке «Ошибка времени выполнения« 91 »: переменная объекта или переменная блока не установлена»

Вероятно, это простая проблема, но я просто не могу ее понять.

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Вы должны убедиться, что pRange существует, прежде чем проверять значение по пустой строке.

Set pRange = .Find(eString, LookIn:=xlValues)

If Not pRange Is Nothing Then
    ' string check here 
End If 
1 голос
/ 15 июля 2011

Так как .Find возвращает объект, он равен Nothing, если значение не найдено.Измените его на:

If pRange Is Nothing Then
    bDT = True
Else
    bDT = False
End If

Или действительно, вы можете полностью исключить блок if/else и просто сделать ExceptionSearch=pRange Is Nothing, поскольку pRange Is Nothing все равно вернется с Boolean

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