Найдите и выберите ячейку смещения результата

#excel #vba

#превосходить #vba

Вопрос:

введите описание изображения здесь

Как написать код на VBA?

Мне нужна Search командная кнопка для поиска значения E2 , содержащего дату, в B:B строке, которая также содержит значение даты, и выбора OFFSET(0,1) ячейки В результате ?

Я получаю эту ошибку:

Объектная переменная или с неустановленной блочной переменной

Это код, который я использовал:

 Private Sub btngo_Click()  Dim thedate As String  Dim fromlist As Range   thedate = Range("E2").Value  fromlist = Range("B6:B370")   fromlist.Find(what:=thedate, after:=Range("B5"), LookIn:=xlValue, _  lookat:=xlWhole, searchorder:=xlByRows, SearchDirection:=xlNext, _  MatchCase:=False).Select  End Sub  

Комментарии:

1. Какой код вы пробовали до сих пор? Где у вас с этим возникли проблемы? Пожалуйста, включите это в свой вопрос.

2. Ваш Find() не подходит, и поэтому он возвращается Nothing — вы не можете позвонить Select Nothing

3. 1) fromlist = Range("B6:B370") должно быть Set fromlist = Range("B6:B370") 2) Set Range переменная для Find метода , затем проверьте, есть Nothing ли какие-либо совпадения перед вами Select , например Dim findList as Range , Set findList = fromlist.Find(what:=thedate, LookIn:=xlValue, lookat:=xlWhole, searchorder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) , If Not findList Is Nothing Then [code for match found] Else [code for no match] End If

Ответ №1:

В первую очередь, fromlist = Range("B6:B370") необходимо, чтобы перед ним поставили.

Set fromlist = Range("B6:B370")

fromlist это диапазон, когда вы пытаетесь установить эту переменную, она возвращает объект и, следовательно, нуждается в НАБОРЕ … вам это нужно как минимум, и это должно устранить ошибку, которую вы видите.

Совет, однако, вам следует больше работать над своим .Find подходом. Опять же, он возвращает объект, и если ничего не найдено, вы получите сообщение об ошибке. Вам следует проверить это.

Ответ №2:

Ваше предложение помогло мне найти код для того, что я хочу.

 sub whatever()  Cells.Find(What:=Worksheets("main").Range("E2"),After:=ActiveCell, _ LookIn:=xlValues,LookAt:=xlWhole,SearchOrder:=xlByRows,SearchDirection:=xlNext, _ MatchCase:=True,SearchFormat:=False).Offset(1, 0).Activate  End Sub  

Без Dim , и Set это прекрасно работает.