Страницы: 1
RSS
Почему при использовании метода Find ошибка: Run-time error '91'
 
добрый день. столкнулся с
Цитата
Run-time error '91':
Object varialble or With block variable not set.
код совершенно простой, ищем в строке 2 активного листа значение "П". определение переменной не помогает. Кто может подсказать в чем беда?
Код
Sub find_1()
Dim width As Long
With ActiveSheet
width = Rows(2).Find(What:="П", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
End With
End Sub
 
Rows(2).Find(What:="П"....), если метод Find ничего не нашел, он возвращает Nothing. У Nothing не может быть Column

Можно так:
Код
Dim objR as Range
Set objR = Rows(2).Find(What:="П"....)
If not objR is nothing then with=objR.Column
Кому решение нужно - тот пример и рисует.
 
Спасибо! Правильно ли я понимаю, что если бы он нашел, то ошибка бы не возникла? Просто я в строке 2, в к столбцах L,m сделал консолидированную ячейку со значением "П", специцально в целях тестирования, чтобы понять, нашел он или нет. Значит не нашел...Тогда если не возражаете, еще 1 вопрос - почему он не нашел? Может консолидированная ячейка помешала?
 
да...без консолидированной все находит. Печально.
 
можно убрать все лишнее из Find и попробовать снова:
Код
Msgbox Rows(2).Find("П").address

как пример.
Кому решение нужно - тот пример и рисует.
 
Цитата
NikitaV написал:
Может консолидированная ячейка помешала?
А что означает консолидированная ячейка? Это как?
Цитата
Пытливый написал:
можно убрать все лишнее из Find
и отдаться на милость последним задействованным параметрам? Лучше наоборот принудительно указывать все параметры(особенно в части поиска по части или по целой и поиска формата и регистра)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Да, Дмитрий(The_Prist) Щербаков, верно говорит, это я не очень предложил. :)
Кому решение нужно - тот пример и рисует.
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
А что означает консолидированная ячейка? Это как?
это значит объединенная ячейка. Объединение двух ячеек в моем конкретном случае. Значение вставлялось в ячейку во 2 ряду, затем она объединялась с ячейкой из 3 ряда. И вот в таком случае Find не находит.

Цитата
Дмитрий(The_Prist) Щербаков написал:
и отдаться на милость последним задействованным параметрам? Лучше наоборот принудительно указывать все параметры(особенно в части поиска по части или по целой и поиска формата и регистра)
не уверен что этот подход сработает. Там ведь нет никаких параметров поиска для тех ячеек, которые являются объединенными..
 
Там зато другие параметры есть. :)

Код
Find(What:="п", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
в таком раскладе у меня все находит, хоть без объединения, хоть с объединением. MatchCase True установите, если надо искать только П заглавную.
Кому решение нужно - тот пример и рисует.
 
Код
Sub find_1()
Dim width As Long
Dim W_Object As Object
 With ActiveSheet
  Set W_Object = Rows(2).Find(What:="П", LookIn:=xlValues, SearchOrder:=xlByRows)
   If Not W_Object Is Nothing Then width = W_Object.Column
 End With
End Sub
Страницы: 1
Наверх