2016-11-07 12 views
0

Для этой проблемы я ошибочно попросил обзор в C.R., но они сказали мне, что не должны быть подходящим местом, поэтому я предлагаю вам тот же вопрос.Различные результаты поиска совпадения и проверки непосредственно ячейки()

Я не могу найти ответы в одиночку. этот очень простой код возвращает 2 разных результата, почему?!?! Я буду с ума ...

Function FirstDay(t As String) As Boolean 

d = DateSerial(Left(t, 4), Mid(t, 5, 2), Right(t, 2)) - 1 
FirstDay = False 
Var = Application.Match(d, Worksheets("Diary").Columns(1), 0) 
If Not IsError(Var) Then 
    FirstDay = True 
End If 

'this only to check if direct match Val to cell() retrieve the same result 
If d = Sheets("Diary").Range("A12") Then Debug.Print "Yes" Else Debug.Print "no" 

End Function 

Звоню функцию с FirstDay("20161107") мой диапазон в sh("Diary").(columns(1)) являются

(date,01/01/2016,07/02/2016,06/03/2016,03/04/2016,08/05/2016,05/06/2016,03/07/2016,07/08/2016,04/09/2016,02/10/2016,06/11/2016,04/12/2016) 

вар должен быть 12, но я извлечь Error2042 тогда FirstDay = ложное, но если я вижу, на ближайших окнах строка

If d = Sheets("Diary").Range("A12") Then Debug.Print "Yes" Else Debug.Print "no" 

получить "Да"

Может ли кто-нибудь сообщить мне, что добавить? thank Fabrizio

ответ

1

Lookup_value может быть числом, текстом или логическим значением. Не дата. Поэтому преобразуем значение даты в число.

Var = Application.WorksheetFunction.Match(CDbl(d), Worksheets("Diary").Columns(1), 0) 
+0

rigth, другой способ, который я нахожу, чтобы установить «d» так долго, спасибо – Fabrizio

 Смежные вопросы

  • Нет связанных вопросов^_^