Шаг 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, ну дальше понятно.

Шаг 29 - Использование With

Оператор With используется для явного указания обьекта, к свойствам которого мы хотим получить доступ. Вот так это выглядит в глобальном плане.

With объект

операции с объектом

End With

Давайте рассмотрим пример. Ниже реализованы два сообщения, которые выводят имя и статус видимости объектов:

Sub Test()

MsgBox (Application.Worksheets.Item(1).Name)

MsgBox (Str(Application.Worksheets.Item(1).Visible))

End Sub

Используя With это можно сделать так:

Sub Test()

With Application

With.Worksheets

MsgBox (.Item(1).Name)

MsgBox (Str(.Item(1).Visible))

End With

End With

End Sub

Используя With можно получить доступ и к пользовательским структурам.

'----------- Описание --------

Type Family

Name_I As String

Name_Cat1 As String

Name_Cat2 As String

End Type

'----------- Код --------

Sub Test()

Dim fam As Family

With fam

.Name_I = "Pety"

.Name_Cat1 = "Vasi"

.Name_Cat2 = "Fisa"

MsgBox (.Name_I)

End With

End Sub


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: