Страницы: 1
RSS
Поиск части фразы, расположенной на листе, ошибка при использовании функции Application.WorksheetFunction.Match
 
Добрый день, Форумчане!

При попытке найти часть фразы, расположенной на листе, некоторые фразы ищутся без проблем, а на некоторых выдает ошибку. Пожалуйста, помогите разобраться. Файл пример прикладываю.
 
Скорей всего дело в длине строки -  559 символов. Обрежьте до 255 и все сработает :) Или используйте(что логичней и технологичней) range.find(..).row
Изменено: kuklp - 31.05.2017 14:31:11
Я сам - дурнее всякого примера! ...
 
А он просто не находит на листе строку, которую Вы ищете, и в этом случае выдаёт эту ошибку.

Изменение: Извиняюсь, искомое значение в области поиска есть. Действительно, видимо, строка в которой это значение есть, слишком длинная, как выше написал  Kuklp.  
Изменено: Equio - 31.05.2017 14:54:35
 
kuklp, Спасибо большое!
По поводу логики: эта строка является частью достаточно большого кода, в котором загружается информация с сайта. Загружаю ее так:
Код
Set xmlHttpRequest = CreateObject("MSXML2.XMLHTTP")
xmlHttpRequest.Open "GET", myUrl, False
xmlHttpRequest.send Null
arr = Split(Trim(xmlHttpRequest.responseText), vbLf)

Далее функцией Application.WorksheetFunction.Match искал местоположение искомых значений в переменной "arr" и "выдергивал" содержание всей строки, в котором содержались искомые значения. Вот так:
Код
txt = arr(Application.WorksheetFunction.Match("*искомое значение*", arr, 0))

Можно ли с помощью ".find" искать в переменной "arr" и "выдергивать" необходимые значения?

Пробовал arr.find( ), выдает ошибку.

Изменено: AlbertSF - 31.05.2017 15:04:39
 
Нет. Тогда другой подход  - instr. Как юзать - найдете по F1. :)
Я сам - дурнее всякого примера! ...
 
Может тогда использовать InStr?
 
Цитата
AlbertSF написал:
искал местоположение искомых значений в переменной "arr"
А тема о чём?
Цитата
AlbertSF написал:
Поиск части фразы, расположенной на листе
 
kuklp, Юрий М,хоть и результат typename(arr) является string. Функция InStr не хочет работать с моей переменной arr. Выдает ошибку 13 (Type mismatch).
Код
instr(1,arr,"искомое значение",vbTextCompare)

Возможно дело в том, как эта переменная образуется:
Код
arr = Split(xmlHttpRequest.responseText, vbLf)
 
AlbertSF, Split возвращает строковый массив. Напишите свою функцию, которой передаёте массив и искомое в нём значение.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Конечно - у Вас же переменная не является строкой.
Обсуждение закрываем: для поиска на листе решение предложено, а сейчас ушли от темы в сторону поиска в массиве.
Страницы: 1
Наверх