Тип данных VBA Date и даты Excel не совпадают.
Они оба сохраняются как серийные номера, но в Excel (с использованием системы 1900):
- Excel, (с использованием системы 1900):
1
-> 1 Jan 1900
- VBA:
1
-> 31 Dec 1899
Поскольку Excel распознает (неправильно) 29 Feb 1900
как действительная дата, базовые значения становятся конгруэнтными по 1 Mar 1900
и после этого.
В зависимости от важности подсчета дат в этом диапазоне существуют различные обходные пути.
Вероятно, самое простое - просто вычесть 1
из компаратора даты vba, если дата предшествует 1-Mar-1900
.
РЕДАКТИРОВАТЬ: По некоторым данным, объяснение этой ошибки считается, что для совместимости с основным рабочим листом в то время Excel был представлен: Lotus123, в котором была та же ошибка. Таким образом, он существует примерно столько же, сколько и в Excel, и вряд ли он изменится, опасаясь взлома программ, которые принимают это во внимание.