Страницы: 1
RSS
Ошибка Run-Time error 91 при попытке найти значение на листе методом Find
 
Добрый день.
Подскажите,будьте любезны,есть файл,при открытии возникает ошибка
Цитата
Run-Time error 91
Object variable or With block variable not set
Ссылается на этот кусок кода
Код
   CurRow = Worksheets("Colors").Cells.Find(What:="Smth here", _
                                                SearchDirection:=xlPrevious, _
                                                SearchOrder:=xlByRows).Row

В чем может быть проблема?
 
Не всегда вопрос переменной. Попробуйте поиграться с настройками безопасности макросов. Должно помочь
 
Понял,попробую
 
Если не поможет, то приложите файл, мы посмотрим
 
Mansso, доброго дня.

Код
Sub МакросОтветаНаВопрос()
With CreateObject("WScript.Shell")
 .Run "https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=45586&TITLE_SEO=45586-pravila-foruma"
End With
End Sub
 
Artem, глупость полнейшая
Описание проблемы явно говорит о том, что проблемы с переменной (не объявлена или объявлена неправильно) и копанием в настройках макросов тут даже не пахнет
В данном случае мы назначаем переменную диапазона, а значит, как минимум, надо писать Set CurRow (вот сюрприз, ведь это написано прямо в описании ошибки),а, по-хорошему, ещё и объявить ее в начале макроса Dim CurRow As Range

vikttur, смысла переназывать особо нет — тыкать в справку и всё. Было бы лень объяснять, так бы и сделал
Изменено: Jack Famous - 04.09.2020 09:45:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
проблемы с переменной (не объявлена или объявлена неправильно)
нет. Проблема скорее всего в том, что искомое значение не найдено и как следствие метод Find не возвращает ссылку на найденный объект Range. И поэтому возникает ошибка, т.к. у Nothing нет свойства Row(Вы, господа, почему-то проглядели все этот момент :) ). В подобных случаях правильно проверять все по науке:
Код
dim rf as range,CurRow as long
set rf = Worksheets("Colors").Cells.Find(What:="Smth here", _
                                               SearchDirection:=xlPrevious, _
                                               SearchOrder:=xlByRows)
if not rf is nothing then
CurRow = fr.row
else
msgbox "значение на найдено"
end if
Название темы: ошибка Run-Time error 91 при попытке найти значение на листе методом Find
Изменено: Дмитрий(The_Prist) Щербаков - 04.09.2020 09:52:29
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, моё почтение)) проглядел
Если бы .Row не было, то Set бы помог (проверил), а тут да…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх