Шаг 28 - Работа с Датами
Для работы с датой в VBA предусмотрен специальный тип Date. Этот тип занимает 8 байт. Оно вам надо ? Это так для информации :-). Пробуем.
Sub Test() Dim MyDate As Date MsgBox (Str(Year(MyDate))) End Sub
У меня выдает 1899 год. Это говорит, что при создании этой переменной она не инициализируется текущей датой. Это плохо. Поместить Дату и время можно из строки воспользовавшись функциями DateValue и TimeValue.
Sub Test() Dim MyDate As Date MyDate = DateValue("1/1/96") Debug.Print Year(MyDate) End Sub
Так же и со временем:
Sub Test() Dim MyDate As Date MyDate = TimeValue("10:10:12") MsgBox Str(Minute(MyDate)) End Sub
Только одновременно хранить и время и дату так не удастся, вот этот код приведет к очень интересному результату.
Sub Test() Dim MyDate As Date MyDate = DateValue("6/1/72") MsgBox Str(Year(MyDate)) MyDate = TimeValue("10:10:12") MsgBox Str(Minute(MyDate)) MsgBox Str(Year(MyDate)) End Sub
Если вы хотите хранить вместе и дату и время, то поступите так:
Sub Test() Dim MyDate As Date MyDate = DateValue("6/1/72") + TimeValue("10:10:12") MsgBox Str(Minute(MyDate)) MsgBox Str(Year(MyDate)) End Sub
Чтобы извлекать части даты и часов используйте такие функции:
Month(переменная типа Date) Day(переменная типа Date) Year(переменная типа Date) Hour(переменная типа Date) Minute(переменная типа Date) Second(переменная типа Date) WeekDay(переменная типа Date)
WeekDay - это день недели, если Вам это нужно, то вы можете написать что-то типа этого.
Sub Test() Dim MyDate As Date MyDate = DateValue("9/1/72") If (WeekDay(MyDate) = vbSunday) Then MsgBox ("Sunday") End Sub
vbSunday это константа, есть еще vbMonday, ну дальше понятно.
Предыдущий Шаг | Следующий Шаг
Автор Каев Артем.