Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

226

Часть III. Visual Basic for Applications

D ate также применяется для хранения значений времени. В VBA дата и время опреде­ ляются как значения, заключенные между знаками # (см. далее).

Примечание

Диапазон дат, которые можно обрабатывать в VBA, намного шире соб­ ственного диапазона дат Excel, который начинается с 1 января 1900 года. Поэтому следите, чтобы в рабочем листе не использовались данные, которые находятся за пределами допустимого диапазона дат Excel. Ниже приведены отдельные примеры объявления переменных и констант с типом данных Date.

Перекрестная ссылка

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

Dim

Today As

Date

 

Dim

S ta rtT im e

As

Date

Const

F irs tD a y As

Date = #1/1 /2 00 7#

Const

Noon =

#12 :00 :0 0#

Предупреждение

©Даты всегда определяются в формате “месяц/день/год”, даже если система настроена на отображение данных в другом формате (например, “день/ месяц/год”).

Если вы используете для отображения даты окно сообщений, дата будет представлена в соответствии с коротким форматом даты, установленным в системе. Аналогично время отображается согласно системному формату (12или 24-часовому). Вы можете модифи­ цировать системные настройки с помощью аплета Язык и региональные стандарты панели управления в Windows.

Ошибка дат в Excel

В Excel (это общеизвестный недостаток) имеется ошибка, связанная с датами. Она основана на том, что 1900 год — високосный. Поэтому в Excel можно представить дату 29 февраля 1900 года, хотя на самом деле такой даты не существует.

=D ate(1900/ 2 / 29)

В VBA не существует подобной ошибки. Эквивалентом функции Excel д а та в VBA яв­ ляется функция D a te S e ria l. Представленное ниже выражение (корректно) возвраща­ ет 1 марта 1900 года.

D a te S e r ia l(19 0 0 ,2 ,2 9 )

Следовательно, система представления дат в Excel не соответствует системе пред­ ставления дат в VBA. Эти две системы возвращают различные значения для дат в диа­ пазоне от 1 января 1900 года до 28 февраля 1900 года.

Операторы присваивания

Оператор присваивания — это инструкция VBA, выполняющая математическое вы­ числение и присваивающая результат переменной или объекту. В справочной системе Excel выражение определяется как комбинация ключевых слов, операторов, переменных

Глава 8. Основы программирования на VBA

227

и констант. Эта комбинация возвращает в результате строку, число или объект. Выраже­ ние может выполнять вычисление, обрабатывать символы или тестировать данные.

Нельзя придумать лучшего определения. Большое количество операций, выполняе­ мых в VBA, связано с разработкой (и отладкой) выражений. Если вы знаете, как созда­ вать формулы в Excel, то у вас не будет возникать проблем с созданием выражений в VBA. В формуле рабочего листа Excel результат отображается в ячейке. С другой сто­ роны, выражение VBA может присваивать значение переменной или использоваться как значение свойства.

В VBA оператором присваивания выступает знак равенства (=). Ниже приведены примеры использования операторов присваивания (выражения приводятся справа от знака равенства),

х = 1

X = X + 1

х = (у * 2) / (z * 2) FileOpen = True

FileOpen = Not FileO pen

Range ( "T h e Y e a r") .V alue = 2010

ОВыражения могут быть очень сложными. Чтобы сделать длинные выражения более удобными для восприятия, используйте символ продолжения строки (пробел с подчеркиванием).Совет

Зачастую в выражениях применяются функции. Это могут быть встроенные функции VBA, функции рабочих листов Excel или специальные функции, разработанные в VBA. Подробнее встроенные функции VBA рассматриваются далее в главе.

В VBA математические операторы играют главную роль. Известные вам операторы описывают математические операции, в том числе сложение (+), умножение (*), деление (/), вычитание (-), возведение в степень (ж) и конкатенацию строк (&). Менее известные операторы — обратная косая черта (\) (используется в целочисленном делении) и опера­ тор Mod (применяется при определении модуля числа). Оператор Mod возвращает оста­ ток от деления одного числа на другое. Например, следующее выражение возвращает 2:

17 Mod 3

VBA поддерживает операторы сравнения, которые применяются в формулах Excel: равно (=), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=) и не равно (<>).

Предупреждение

Оператор отрицания (знак “минус”) в Excel и VBA интерпретируется поразному. При работе в Excel следующая формула возвращает значение 25.

= - 5 * 2

После выполнения следующего кода VBA переменная х получит значение -25.

х = -5 А 2

Полученный результат объясняется тем, что в VBA сначала выполняется операция возведения в степень, а затем применяется оператор отрицания. А вот следующий код вернет нужное нам значение 25.

х = (-5 ) А 2

228

Часть III. Visual Basic for Applications

За единственным исключением

порядок приоритетности выполнения операторов

в VBA совпадает с очередностью выполнения операторов в Excel (табл. 8.3). Если нужно ее изменить, используйте скобки.

Таблица 8.3. Приоритетность выполнения операторов

Оператор

Выполняемая операция

Приоритетность оператора

 

Возведение в степень

1

* и /

Умножение и деление

2

+ и -

Сложение и вычитание

3

&

Конкатенация

4

= , < , > , < = , >= , о

Сравнение

5

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

х = 4 + 3 * 2

Во избежание неоднозначности можно записать оператор следующим образом:

х = 4 + ( 3 * 2 )

В VBA также имеется полный набор логических операторов, которые показаны в табл. 8.4. Дополнительные сведения об этих операторах (вместе с примерами) можно найти в справочной системе VBA.

Таблица 8.4. Логические операторы VBA

Оператор

Действие

Not

Логическое отрицание выражения

And

Логическая конъюнкция двух выражений

Or

Логическая дизъюнкция двух выражений

Xor

Логическое исключение двух выражений

Eqv

Логическая эквивалентность двух выражений

Imp

Логическая импликация двух выражений

В следующей инструкции используется оператор N o t для отображения линий сетки

в активном окне. Свойство D is p la y G r id L in e s принимает значение T ru e или F a ls e . Следовательно, оператор N o t изменяет T ru e на F a ls e , a F a ls e — на T ru e.

A ctive W in d o w .D is p la y G rid lin e s = _

Not A ctive W in d o w . D is p la y G rid lin e s

Представленное далее выражение осуществляет логическую операцию And. Функция M sgBox отображает значение T ru e, только если Л ист1 — активный лист и активная

ячейка находится в строке 1. Если одно или оба этих условия неверны, функция M sgBox отображает значение F a ls e .

MsgBox A ctiveS heet.N am e = "Лист1" And A c t iv e C e ll. Row = 1

Следующее выражение осуществляет логическую операцию Or. Оператор MsgBox

отображает T ru e, если активен Л ист1 или Л и ст2.

MsgBox

A ctiveS heet.N am e

=

"Лист1" _

Or

A ctiveS heet.N am e

=

"Лист2"