Поиск ячейки с определенным значением и возвращаемой позицией - PullRequest
0 голосов
/ 30 октября 2019

Я новичок в VBA и хочу закодировать функцию, которая находит дату, которая хранится в переменной, и возвращает ее адрес.

Это то, что я получил до сих пор

Dim ran As Range
Dim dat As Date
dat = "01.05.2009  15:42:00"

Set ran = Cells.Find(What:=dat, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

If ran Is Nothing Then
    MsgBox ("no result")
    Else
    MsgBox (ran.Address)

End If

Когда я запускаю этот фрагмент, он всегда возвращает «нет результата». Однако, когда я не использую переменные и ставлю это следующим образом

Dim ran As Range
Dim dat As Date

Set ran = Cells.Find(What:="01.05.2009  15:42:00", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

If ran Is Nothing Then
    MsgBox ("no result")
    Else
    MsgBox (ran.Address)

End If

, он возвращает адрес ячейки, как и ожидалось.

Поскольку я хочу использовать этот фрагмент кода позже в более крупном проектеМне нужно, чтобы это работало с такой переменной, чтобы ее можно было использовать в цикле с серией различных поисков.

Я был бы очень признателен, если кто-то может сказать мне, где я иду не так, или знаетлучший подход к этому.

1 Ответ

0 голосов
/ 30 октября 2019

Я предполагаю, что вы отображаете даты на своем рабочем листе как что-то вроде Пользовательский "mm.dd.yy ЧЧ: ММ: СС" Поиск немного привередлив в поиске дат и работает наиболее предсказуемо, когда вы ищете строку даты, которая соответствуетваш формат отображения.

Я думаю, что ваш код будет работать, если вы объявите dat как String или если вы работаете с переменной Date (вместо жесткого кодирования значения, как в вашем примере), используйте

What:=Format(dat, "mm.dd.yy HH:MM:SS")

Тем не менее @BigBen верен, что код, который вы разместили, должен вызвать ошибку на

dat = "01.05.2009  15:42:00"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...