Day
будет целым числом где-то между 1 и 31, в зависимости, в частности, от "дневной" части даты, возвращаемой функцией DateTime.Now
.
способ хранения дат,это, по сути, Double
значения, где целая часть - это количество дней, а десятичная часть - время дня.
Debug.Print Format(CDate(0), "yyyy-mm-dd")
Вывод: 1899-12-30
Мы 10 июня, поэтому значение даты 10
соответствует 9 января 1900 года.
Вы хотите сохранитьзначение, возвращаемое функциями Day
, Month
и Year
, в Long
целочисленные переменные;not Date
.
Dim datDay As Long
datDay = DateTime.Day(DateTime.Date) ' datDay is 10 because DateTime.Date is 2019-06-10.
Примечание: хотя неквалифицированные функции Day
, Date
, Month
и Year
(и другие) работают отлично, вероятно, это хорошая идея для квалификацииони с модулем, в котором они объявлены (VBA.DateTime
), чтобы избежать потенциально запутанной неоднозначности, например, Date
- это и имя свойства DateTime
модуля, и , это также тип данных(Dim foo As Date
), и оба имеют очень разные значения.