Продолжайте получать ошибку 91 с функцией поиска Excel

Я пробовал предложения на этом сайте, и ни один из них не работает.

В ячейках C6:Z6 у меня есть даты с 01.01.2011 по 12.01.2012 (в формате даты в Великобритании). Я запускаю следующий макрос:

Sub FindDate()

    Range("C6:Z6").Select

    Selection.Find(What:="01/08/2012", After:=ActiveCell, LookIn:=xlFormulas _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

End Sub

и всегда появляется ошибка времени выполнения 91. Я пытался использовать «Установить» для установки диапазона, но это тоже не помогло.

Для контекста я пытаюсь получить номер столбца для заданной даты (используя ActiveCell.Column).


person Sputnik    schedule 16.08.2012    source источник
comment
вы также можете сделать это, используя worksheetfunction.match(...)   -  person Dan    schedule 16.08.2012


Ответы (1)


Когда вы просто ищете «08.01.2012», вы на самом деле ищете строку. Вы должны преобразовать его в дату, используя CDate.

Также лучше проверить, найдено ли что-нибудь, используя If Not aCell Is Nothing Then, чтобы избежать ошибок. См. мой пост в этой ссылке.

Попробуй это

Sub FindDate()
    Dim aCell As Range

    Set aCell = Range("C6:Z6").Find(What:=CDate("01/08/2012"), After:=ActiveCell, _
    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

    If Not aCell Is Nothing Then
        MsgBox aCell.Column
    Else
        MsgBox "Not Found"
    End If
End Sub
person Siddharth Rout    schedule 16.08.2012
comment
Отлично, это работает! Хотя я обнаружил, что мне пришлось изменить SearchOrder на «xlByColumns» и установить After на «Range (C6)», чтобы избежать ошибок. - person Sputnik; 16.08.2012