Читаем VBA для чайников полностью

* вычисления с большими числами, когда требуется более высокая точность, чем та, которая обеспечивается типами данных с плавающей запятой.

Значения типа Currency могут иметь до 19 значащих цифр, из них 15 - до запятой и 4 - после (положение десятичного разделителя фиксировано).

<p>Работа с датами</p>

Тип данных Date используется для удобства при работе со значениями дат и времени. Где-то в своих глубинах VBA кодирует дату и время в виде некоторого числа вроде 35692,9201273148. которое, очевидно, совершенно ничего не говорит большинству простых смертных. К счастью, можно полностью игнорировать это обстоятельство и работать в своих программах с датами и временем точно так же, как вы это делаете на бумаге или в текстовом редакторе.

При этом нужно только помнить, что значения дат и времени- их буквальные значения - необходимо помещать в ограничивающую их пару знаков "решетки'". Например, в следующем фрагменте программного кода сначала объявляются две переменные типа Date, а затем им присваиваются значения:

Dim dateWeddingDay As Date, dateTimeOfCeremony As Date dateWeddingDay = #4/20/99#

dateTimeOfCeremony = #3:15:00 PM#

Как и в случае данных типа Currency. VBA автоматически отображает даты в формате, соответствующем местному стандарту. Например, выражение Format (#10/24 /89#, "Long date") в США порождает строку "Tuesday. October 24, 1989", а в России - "24 Октябрь 1989 г.".

<p>Ввод дат</p>

Печатать буквальные значения дат можно почти в любом виде, какой только возможен. Например, допустимо любое из следующих представлений:

#09/1/1998#

#Sep 25, 93#

#Janua 9 1905

Если редактор Visual Basic распознает введенные вами данные как допустимое значение даты, эти данные будут конвертированы в "краткое представление даты", заданное в соответствующей панели управления Windows. Если вы не укажете год, VBA добавит текущий год за вас. Такое конвертирование происходит сразу же, как только вы переместите текстовый курсор в другую строку, а не откладывается до момента, когда программа начнет выполняться.

<p>Время имеет значение</p>

Буквальные значения времени вводятся в формате #часы:минуты:секунды символ#, где символ - это AM или РМ (означающие до полудня и после полудня соответственно). Например:

#10:45:00 РМ#

#2:3:30 АМ#

Печатать незначащие нули, как в #01:02:03 РМ#, не обязательно, но VBA добавит их за вас, как только вы переместите курсор в другую строку программного кода. Точно так же вы можете опустить ненужные вам элементы в представлении времени, и VBA дополнит ваш ввод. Например, вы можете ввести только секунды, напечатав что-нибудь вроде #0:0:23#, a VBA изменит введенное значение на стандартное представление времени - в данном случае на #12:00:23 АМ#.

<p>Математика дат и времени</p>

Сложение и вычитание дат в рамках обычных арифметических операций в VBA возможны, но, к сожалению, результаты такого сложения и вычитания не соответствуют обычным представлениям о датах. Например, #3/19/2005# - #3/19/2004#н е дает в результате '"1 год", как желательно было бы иметь, а дает #12/3 0/1900#. Такой результат обусловлен спецификой представления значений дат в VBA, но я не собираюсь здесь утомлять вас обсуждением этой специфики. Все, что вам нужно, - это знать о существовании в VBA двух функций, DateAdd ( ) и DateDiff ( ), которые должны полностью удовлетворить ваши потребности в математике дат. Использование этих функций обсуждается в главе 11.

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

Di m date Then A s Date

dateThen = #07:15 AM# + #12:00# ' = #07:15:00 PM#

dateThen = #07:15:00 AM# - #0:15 AM# ' = #07:00:00 AM#

dateThen = #07:15:15 AM# + #0:0:30 AM# ' = #07:15:45 AM#

В этом примере показан минимум того, что можно напечатать. Как всегда, VBA конвертирует введенные данные в полноформатное буквальное значение времени, например #0:0:30 АМ# превратится в #12 : 00 : 30 АМ#. И еще (как показано в представленном примере): если вы хотите получить правильные результаты при использовании арифметических операций со значениями времени, то используемые при этом переменные должны явно объявляться как переменные типа Date.

<p>Информацию - в строку</p>

Поскольку VBA с такой легкостью конвертирует данные одних типов в другие, строковые переменные оказываются нужными значительно реже, чем это может показаться на первый взгляд. Если единственной задачей является отображение нестрокового значения в виде, понятном обычному человеку, то для этого совсем не обязательно конвертировать такое значение в строковое. Лучше просто использовать данное числовое значение или дату- или даже значение типа Variant - в качестве аргумента некоторой функции или значения свойства объекта, для которых данный аргумент или значение должны быть строковыми.

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных