Я не могу на всю жизнь заставить меня работать.Excel VBA Application.Match между длинным временем и пользовательским форматом
У меня есть столбец r
значений времени, отформатированных как «yyyy-mm-dd hh: mm: ss.000 AM/PM» (этот формат является одним из пользовательских форматов, которые можно выбрать для ячейки).
У меня также есть ячейка c
, содержащая значение времени, отформатированное как «* hh: mm: ss» (формат первого времени).
Теперь я хочу найти, на каком ряду i
c.Value
находится в диапазоне r
. Я делаю это с помощью
i = Application.Match(c.Value, r, 1)
На этой строке я получаю «Ошибка выполнения„13“: Несоответствие типа» и я думаю, что это происходит потому, что клетки в r
имеет пользовательский формат, или потому, что есть нет даты в c.Value
.
Как я могу заставить это работать? Есть ли другой способ, которым я могу получить размещение c.Value
в диапазоне r
?
Код:
Sub test()
Dim r As Range
Set r = Range("A1:A10")
Dim c As Range
Set c = Range("B1")
Dim i As Integer
i = Application.Match(c.Value, r, 1) 'ERROR!
End Sub
РЕШИТЬ:
Я не знаю, Excel обрабатывает даты и времени как числа, так что я получил его на работу при сохранении c.Value
как тип Double
, прежде чем использовать его в функция.
Матч повысит ошибку, если значение ** не найдено ** функцией совпадения. Вы можете заблокировать эту ошибку, если вы «Dim i as Variant» (так как «Match» может возвращать тип «Long/Integer» или «Error», вам нужен контейнер «Variant»). –
Да, я знаю, но я знаю, что время там. Но мне удалось это решить, см. Править в OP :) – darksmurf
Cheers. Вы можете добавить «ответ» на свой вопрос и пометить его как принятый :) –