Основы офисного программирования и язык VBA

       

Присваивание значений


При присваивании значений переменным типа дата следует заключать дату в специальные ограничители "#" или задавать ее как строковую константу. При задании даты в ограничителях, например #9, May, 99 # она автоматически преобразуется к стандартному формату #5/9/99# (месяц/день/год). Вот пример некоторых действий над датами:

Public Sub WorkWithDates()

'Работа с датами Dim dat1 As Date, dat2 As Date, dat3 As Date

'Присваивание дат dat1 = 12 dat2 = 9 / 5 / 99 dat3 = #9/5/1999# Debug.Print dat1, dat2, dat3 dat1 = "15/7/99" dat2 = #5/9/1999# dat3 = dat3 + 100 Debug.Print dat1, dat2, dat3 If dat3 > dat2 Then Debug.Print dat3 - dat2 Else Debug.Print dat2 - dat3 End If

End Sub

Приведем результаты выполнения этой программы:

11.01.1900 0:26:11 05.09.99 15.07.99 09.05.99 14.12.99 219

Прокомментируем результаты, поскольку некоторые из них могут вызывать недоумение. Остановимся на первых двух присваиваниях. Чтобы понять их, нужно вспомнить внутренне представление дат. В первом случае к начальной дате прибавляется 12 дней, отсюда и получается 11 января 1900 года. Во втором случае, поскольку выражение в правой части не заключено в ограничители, оно вычисляется как обычное арифметическое выражение, полученное дробное число воспринимается как время от начала суток, - оно и печатается. Обратите внимание, на третье присваивание, первое число воспринимается как номер месяца, для российских программистов здесь кроется источник возможных ошибок, поэтому лучше задавать даты, используя названия месяцев, которые автоматически будут преобразованы в соответствующий формат.

Далее в программе продемонстрированы некоторые возможности выполнения операций над датами - прибавление целого числа дней, сравнение дат, вычитание дат. Заметьте, вычитание дат дает разницу между ними, выраженную в днях.



Содержание раздела