Добрый вечер!
Столкнулся с проблемой - имеются ячейки, из которых функцией извлекается предпоследнее вхождение текста после определенного делителя "Human".
В том случае, если функция не находит подходящих значений, она возвращает #ЗНАЧ!, который мешает работе остальных функций, которые используют ссылки на эту.
Необходимо результат #ЗНАЧ! при вызове функции заменить на пустое значение ""
Долго гуглил информацию по поводу обхода ошибок с помощью CVErr(xlErrValue)/Application.Function.Iserror, но не получается ими правильно воспользоваться.
Сам код:
Был бы очень благодарен за помощь с объяснением того, как правильно необходимо отлавливать подобные ошибки в функции.
Файл-пример прикладываю.
Столкнулся с проблемой - имеются ячейки, из которых функцией извлекается предпоследнее вхождение текста после определенного делителя "Human".
В том случае, если функция не находит подходящих значений, она возвращает #ЗНАЧ!, который мешает работе остальных функций, которые используют ссылки на эту.
Необходимо результат #ЗНАЧ! при вызове функции заменить на пустое значение ""
Долго гуглил информацию по поводу обхода ошибок с помощью CVErr(xlErrValue)/Application.Function.Iserror, но не получается ими правильно воспользоваться.
Сам код:
Код |
---|
Public Function RegExpExtract(text As String, Pattern As String, Optional Item As Integer = 1) As String On Error GoTo ErrHandl Set regex = CreateObject("VBScript.RegExp") regex.Pattern = Pattern regex.Global = True If regex.Test(text) Then Set matches = regex.Execute(text) RegExpExtract = matches.Item(Item - 1) Exit Function End If ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function Function Test(Текст As String) As String Dim ПолучитьПредпоследнийHuman As String РазделитьТекст = Split(Текст, "Human:", , vbTextCompare) ПосчитатьHuman = UBound(РазделитьТекст) ПолучитьПредпоследнийHuman = РазделитьТекст(ПосчитатьHuman - 2) ПоискПоRegExp = Trim(RegExpExtract(ПолучитьПредпоследнийHuman, "\s.*.")) ПовторныйДелитель = Split(ПоискПоRegExp, "Bot:", , vbTextCompare) Test = ПовторныйДелитель(0) End Function |
Был бы очень благодарен за помощь с объяснением того, как правильно необходимо отлавливать подобные ошибки в функции.
Файл-пример прикладываю.