Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA Тема 3 (сокр) лене.doc
Скачиваний:
29
Добавлен:
29.02.2016
Размер:
1.12 Mб
Скачать

1.3 Переменные, массивы, условные конструкции, условные переходы

ТИПЫ ДАННЫХ

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

В VBA имеются следующие основные типы данных:

Тип данных

Размер (байт)

Диапазон значений

Byte (байт)

1

От 0 до 255

Boolean (логический)

2

True или False

Integer (целое число)

2

От -32 768 до 32 767

Long (длинное целое число)

4

От -2 147 483 648 до 2 147 483 647

Single (число с плавающей запятой обычной точности)

4

От -3.402823Е38 до -1 .401298Е-45 для отрицательных значений

Double (число с плавающей запятой двойной точности)

8

От -1,79769313486232Е308 до -4,94065645841247Е-324 для отрицательных значений;

от 4,94065645841247Е-324 до 1,79769313486232Е308 для положительных значений

Decimal (масштабируемое целое число)

14

+/-79228162514264337593543950335 с 28 знаками справа от запятой;

минимальное ненулевое значение имеет вид +/-0,0000000000000000000000000001

Date (даты и время)

8

От 1 января 100 г. до 31 декабря 9999г.

Object (объект)

4

Любой указатель объекта

String (строка переменной длины)

10 + длина строки

От 0 до приблизительно 2 миллиардов

String (строка постоянной длины)

Длина строки

От 1 до приблизительно 65 400

Variant (числовые подтипы)

16

Любое числовое значение вплоть до границ диапазона для типа Double

Variant (строковые подтипы)

22+длина строки

От 0 до приблизительно 2 миллиардов

Тип данных, определяемый пользователем (с помощью ключевого слова Туре)

Объём определяется элементами

Диапазон каждого элемента определяется его типом данных

ОПИСАНИЕ ПЕРЕМЕННЫХ

Описание типа каждой переменной делает программу надежнее и, кроме того, убыстряет ее работу, т. к. VBA не требуется тратить время на распознавание типа неописанной переменной при каждом обращении к ней.

Синтаксис:

Dim [WithEvents] ИмяПеременной[([Индексы]]] [As [New] Тип] _

[, [WithEvents] ИмяПеременной [([Индексы] I ] [As [New] Тип]] . . .

Аргументы:

WithEvents

Ключевое слово, указывающее, что аргумент ИмяПеременной является именем объектной переменной, которая используется при отклике на события, генерируемые объектом ActiveX (т. е. объектом, который может быть открыт для других приложений и средств программирования).

ИмяПеременной

Имя переменной, удовлетворяющее стандартным правилам именования переменных

Индексы

Размерности переменной массива; допускается описание до 60 размерностей. Для задания аргумента Индексы используется следующий синтаксис:

[Нижний То] Верхний [, [Нижний То] Верхний] ...

Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией option Base- Если отсутствует инструкция option Base, нижняя граница массива равняется нулю

New

Ключёвое слово, включающее возможность неявного создания объекта. Если указано ключевое слово New при описании объектной переменной, новый экземпляр объекта создается при первой ссылке на него, поэтому нет необходимости присваивать ссылку на объект с помощью инструкции Set

Тип

Тип данных переменной. Для каждой описываемой переменной следует использовать отдельное предложение As тип

Племенные, описанные с помощью ключевого слова Dim на уровне модуля, доступны для всех процедур в данном модуле. Переменные, описанные на уровне процедуры, доступны только в данной процедуре.

Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры. Например, следующая инструкция описывает переменную с типом Integer.

Dim N As Integer

Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового экземпляра рабочего листа.

Dim X Аs New Worksheet

Если при описании объектной переменной не используется ключевое слово New то для использования объекта, на который ссылается переменная, существующий объект должен быть присвоен переменной с помощью игструкции Set.

Если тип данных или тип объекта не задан, и в модуле отсутствует инструкция DefТип, по умолчанию переменная получает тип Variant. Для обязательного описания всех переменных надо поместить в начале модуля инструкцию Оption Explicit. Использование этой инструкции полезно при отладке программ, т. к. она позволяет легче отслеживать возможную путаницу в именах при наборе программы.

ДОПУСТИМЫЕ ИМЕНА

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

1. Длина имени не должна превышать 255 символов.

2. Имя не может содержать точек, пробелов и следующих символов - % , & , !, #.©,$.

3. Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы.

4. Имена должны быть уникальны внутри области, в которой они определены.

5. Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур.

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

процентная ставка

х__начзнач

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

ПроцентнаяСтавка

х_НачЗнач

ИНСТРУКЦИЯ DEFТИП

Инструкция DefТип (вместо тип в имени инструкции фигурируют буквы, обозначающие конкретный тип данных) используется на уровне модуля для задания типа данных по умолчанию для переменных, аргументов, передаваемых в процедуры, и значений, возвращаемых процедурами- Function и Property Get, имена которых начинаются с соответствующих символов.

Синтаксис:

DefBool ДиапазонБукв[, ДиапазонБукв]...

Тип данных Boolean Тип данных Byte

DefByfe ДиапазонБукв[, ДиапазонБукв]...

Тип данных Byte

DefInt ДиапазонБукв[, ДиапазонБукв]...

Тип данных Integer

DefLng ДиапазонБукв[, ДиапазонБукв]...

Тип данных Long

DefCur ДиапазонБукв[, ДиапазонБукв]...

Тип данных Currency

DefSng ДиапазонБукв[, ДиапазонБукв]...

Тип данных Single

DefDbl ДиапазонБукв[, ДиапазонБукв]...

Тип данных Double

DefDate ДиапазонБукв[, ДиапазонБукв]...

Тип данных Date

DefStr ДиапазонБукв[, ДиапазонБукв]...

Тип данных String

DefObj ДиапазонБукв[, ДиапазонБукв]...

Тип данных Object

DefVar ДиапазонБукв[, ДиапазонБукв]...

Тип данных Variant

Аргумент ДиапазонБукв имеет следующий синтаксис:

Буква1[-Буква2]

Аргументы Буква1 и Буква2 указывают границы диапазона имен, для которых задается тип данных по умолчанию.

В следующем примере инструкция устанавливает, что все переменные с именами, начинающимися с букв из диапазона от А до Q, имеют строковый тип:

DefStr A-Q

Инструкция Def Тип действует только на модуль, в котором она используется.

При указании диапазона букв обычно определяется тип данных по умолчанию для переменных, которые начинаются с первых 128 символов набора. Однако при указании диапазона A—Z задается тип данных по умолчанию для всех переменных, включая те, что начинаются с международных символов из расширенной части набора (128-255).

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

%

Integer

&

Long

!

Single

#

Double

@

Currency

S

String

МАССИВЫ

Как и в других языках программирования, в VBA вы можете использовать массивы. Примеры объявления массивов приведены ниже.

Dim B(3, 3) As Single

Dim A(12) As Integer

Первая строка объявляет двумерный массив 3x3 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(11). В этом случае говорят, что 0 — базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base 1. После этого индексы массивов аив будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова то при объявлении массива:

Dim B(l То 3, 1 То 3) As Single

Dim A(l To 12) As Integer

Массив в программе определяется поэлементно. Например,

Dim B(l To 2, 1 То 2) As Single

B(1,1)=2

В(1,2)=4

В(2,1)=1

В(1,2)=6

Удобным способом определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа variant. Например,

Dim A As Variant

А = Array{10,20,30)

В = А(2)

Динамические массивы

Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не надо указывать размерность, например:

Dim R() as Single

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

Синтаксис:

ReDim [Preserve] ИмяПеременной(Индексы) [As Тип] _

[. ИмяПеременной(Индексы)[As Тип]] ...

Аргументы:

Preserve

Ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности

ИмяПеременной

Имя переменной, удовлетворяющее стандартным правилам именования переменных

Индексы

Размерности переменной массива; допускается описание до 60 размерностей. Аргумент индексы использует следующий синтаксис:

[Нижний То] Верхний [, [Нижний То] Верхний] ...

Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией option Base. Если отсутствует инструкция option Base, нижняя граница массива равняется нулю

Тип

Тип данных массива

Например, установим границы массивы r:

ReDim R(1 To 10)

Допустимо повторное использование инструкции ReDim для изменения числа элементов и размерностей массива.

Функции и процедуры для работы с массивами

При работе с массивами бывает полезно применять следующие функции и процедуры.

Array(СписокАргументов)

Создает массив типа variant. Аргумент CписокАргументов представляет разделенный запятыми список значений, присваиваемых элементам массива.

Пример:

Dim День As Variant

День = Array("Пн", "Вт", "Ср", "Чт", "Пт")

IsArray(ИмяПеременной)

Возвращает True, если переменная содержит массив; в противном случае возвращается False. Функцию IsArray используют для проверки значений переменных типа Variant, содержащих массивы

[, размерность])

Размерность — целое число, указывающее размерность, нижнюю или верхнюю границу которой возвращает функция. Для первой размерности следует указать 1, для второй 2 и т. д. Если аргумент Размерность опущен, подразумевается значение 1

Erase СписокМассивов

Повторно инициализирует элементы массивов фиксированной длины и освобождает память, отведенную для динамического массива. СписокМассивов представляет имена одной или нескольких очишаемых переменных массивов, разделенных запятой. Инструкция Erase устанавливает элементы массивов фиксированной длины следующим образом: массив чисел или строк фиксированной длины (присваивает каждому элементу значение 0), массив строк переменной длины (присваивает каждому элементу значение пустой строки), массив типа variant (присваивает каждому элементу значение Empty).

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

КОНСТАНТЫ

Константы, в отличие от переменных, не могут изменять свои значения. Использование констант делает программы легче читаемыми и позволяет проще вносить исправления — отпадает необходимость многократно исправлять значения по тексту программы, т. к. достаточно ввести новое значение при определении константы.

Синтаксис:

[Public | Private] Const ИмяКонстанты [As Тип] = Выражение

Аргументы:

Public

Ключевое слово, используемое на уровне модуля для описания констант, доступных всем процедурам во всех модулях. Не допускается в процедурах.

Private

Ключевое слово, используемое на уровне модуля для описания констант, доступных только внутри модуля, в котором выполняется описание. Не допускается в процедурах.

ИмяКонстанты

Имя константы, удовлетворяющее стандартным правилам именования переменных

Тип

Один из поддерживаемых типов данных: Byte, Boolean,

Integer, Long, Currency, Single, Double. Decimal (в настоящее время не поддерживается), Date, String или Variant. Для каждой описываемой константы следует использовать отдельное предложение as тип

Выражение

Литерал, другая константа или любое сочетание, которое включает все арифметические или логические операторы, за исключением Is

Пример:

Const ПроцентнаяСтавка As Single = 0.2

Const Фирма = "ООО Бескрайние просторы"

ТИП ДАННЫХ, ОПРЕДЕЛЕННЫЙ ПОЛЬЗОВАТЕЛЕМ

Наряду с массивами, представляющими нумерованный набор элементов одного типа, существует ещё один способ создания структурного типа — тип, определенный пользователем, или в привычной терминологии для программистов запись. Запись — это совокупность нескольких элементов, каждый из которых может иметь свой тип. Элемент записи называется полем. Запись является частным случаем класса, в котором не определены свойства и методы.

Синтаксис:

[Private | Public] Туре ИмяПеременной

ИмяЭлемекта [([Индексы])] As тип

[ИмяЭлемента [([Индексы])] из тип]

End Type

Аргументы:

Public

Используется для описания определяемых пользователем типов, которые доступны для всех процедур во всех модулях всех проектов

Private

Используется для описания определяемых пользователем типов, которые доступны только в модуле, в котором выполняется описание

ИмяКонстанты

Имя типа, определяемого пользователем

ИмяЭлемента

Имя элемента, определяемого пользователем типа

Индексы

Размерности элемента, являющегося массивом. Для задания массива, размеры которого могут изменяться, указываются только скобки. Аргумент Индексы использует следующий синтаксис:

[Нижний То] Верхний [,[Нижний То] Верхний] . .

Тип

Тип данных элемента; поддерживаются типы: Byte,

Boolean, Integer, Long, Currency, Single, Double, Date, String (для строк переменной длины), String* длина (для строк фиксированной длины), Object, Variant и другой, определяемый пользователем тип

В данном примере инструкция туре используется для определения типа данных (только на уровне модуля). При появлении в модуле класса инструкции Туре должно предшествовать ключевое слово Private.

‘ Тип, определенный пользователем

Туре Студент i

' Элементы типа данных i

Фамилия As String * 20 Имя As String * 20

Отчество As String * 20

НомерЗачетки As Integer

Группа As String * 10

Курс As Long

ДатаРождения As Date

End Type

Sub ВводДанных()

‘ Описание переменной Экономист

Dim Экономист As Студент

‘Присвоение значений элементам переменной Экономист i

With Экономист

.НомерЗачетки = 12003

.Группа = "Менеджмент"

End With

End Sub

Можно создавать массив, содержащий элементы собственного типа. Например, следующий массив состоит из сведений о 20 студентах.

Dim СтудентЭкономист(1 to 20) As Студент

‘Присваивает значения элементам первой компоненты массива t

СтудентЭкономист(1). Фамилия = "Промокашкин"

СтудентЭкономист{1). Имя = "Евстегней"

СтудентЭкономист(1). Отчество = "Поликарпович"

ОПЕРАЦИИ VBA

В программах на VBA можно использовать стандартный набор операций над данными. Имеются три основных типа операций:

- Математические, выполняются над числами, и их результатом являются числа

- Отношения, применяются не только к числам, и их результатом являются логические значения, например х>у

- Логические, используются в логических выражениях и их результатом являются логические значения, например Not x And у

Приведем операции VBA указанных и дополнительных категорий.

Математические операции.

[Операнд1] + [Операнд2]

Сложение

[Операнд1] - [Операнд2]

Вычитание

- [Операнд]

Перемена знака

[Операнд1] * [Операнд2]

[Операнд1] / [Операнд2]

Умножение

Деление

[0перанд1] \ [Операнд2]

Целочисленное деление

[Операнд1] Mod [Операнд2]

Остаток от деления по модулю

[Операнд1] ^ [Операнд2]

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

Операции отношения

[Операнд1]< [Операнд2]

Меньше

[Операнд1]> [Операнд2]

Больше

[Операнд1]<= [Операнд2]

Меньше или равно

[Операнд1]>= [Операнд2]

Больше или равно

[Операнд1] <> [Операнд2]

Не равно

[Операнд1] = [Операнд2]

Равно

[Операнд1] Is [Операнд2)

Сравнение двух операндов, содержащих ссылки на объекты

[Операнд1] Like [Операнд2]

Сравнение двух строковых выражений

Логические операции

[Операнд1] And [Операнд2]

Логическое умножение

[[Операнд1] Or [Операнд2]

Логическое сложение

[Операнд1] Хог [Операнд2]

Исключающее or (или)

[Операнд1] Mot [Операнд2]

Логическое отрицание

[Операнд1] Imp [Операнд2]

Логическая импликация (в настоящее время почти не используется)

[Операнд1] Equ [Операнд2]

Логическая эквивалентность (в настоящее время почти не используется)

Другие операции

[Строка1] & [Строка2]

Сложение строк. Для сложения строк допустимо использование операции

[Cтрока1] + [Строка2], но предпочтительнее, во избежания путаницы, применять операцию со знаком &

Приоритеты операций

VBA выполняет операции в соответствии с их приоритетами, что обеспечивает однозначность в трактовании значений выражений. Приведем приоритеты выполнения операций.

Приоритет

Операция

1

Вызов функции и скобки

2

^

3

- (смена знака)

4

*, /

5

\

6

Mod

7

+, -

8

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

9

Not

10

And

11

Or

12

Xor

13

Equ

14

Imp

2 ЦИКЛЫ. ПРОЦЕДУРЫ. ФУНКЦИИ

2.1 ВСТРОЕННЫЕ ФУНКЦИИ VBA

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

  • Математические функции

  • Функции проверки типов

  • Функции преобразования форматов

  • Функции обработки строк

  • Функции времени и даты

Ниже рассмотрены основные функции из этих категорий.

Математические функции

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

Функция

Возвращаемое значение

Abs (число)

Модуль (абсолютная величина)

Atn (число)

Арктангенс

Cos (число)

Косинус

Exp (число)

Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень

Log (число)

Натуральный логарифм

Rnd (число)

Случайное число из интервала [0,1).

Если число меньше нуля, то Rnd возвращает каждый раз одно и то же число, используя аргумент в качестве опорного числа; если число больше нуля или аргумент опущен, то — следующее случайное число в последовательности; если число равняется нулю, то — случайное число, возвращенное при предыдущем вызове этой функции.

Перед вызовом функции Rnd используйте инструкцию Randomize без аргумента

Sgn (число)

Знак числа

Sin (число)

Синус

Sqr (число)

Квадратный корень из числа

Tan (число)

Тангенс

Fix (число) и Int (число)

Обе функции, Int и Fix, отбрасывают дробную часть числа и возвращают целое значение.

Различие между функциями Int и Fix состоит в том, что для отрицательного значения аргумента число функция Int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, a Fix — ближайшее отрицательное целое число, большее либо равное указанному

Функции проверки типов

Функции проверки типов проверяют, является ли переменная выражением специфицированного типа.

Функция

Проверка

IsArray(переменная)

Является ли переменная массивом

IsDate(переменная)

Является ли переменная датой

IsEmpty(переменная)

Была ли переменная описана инструкцией Dim

IsError(переменная)

Является ли переменная кодом ошибки

IsNull(переменная)

Является ли переменная пустым значением (Null)

IsNumeric(переменная)

Является ли переменная числовым значением

IsObject(переменная)

Является ли переменная объектом

Функции преобразования форматов

Преобразование строки в число и обратно осуществляют следующими функциями.

Val (строка)

Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа

Str (число)

Возвращает значение типа variant (string), являющееся строковым представлением числа

В качестве допустимого десятичного разделителя функция str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию cstr, описанную ниже.

Чтобы представить числовое значение как дату, время, денежное значение или в специальном формате, следует использовать функцию Format.

Format

Возвращает значение типа Variant (String), содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата.

Синтаксис:

Format(Выражение[, Формат[, ПервыйДеньНедели [, ПерваяНеделяГода]]])

  • Выражение — любое допустимое выражение

  • Формат — любое допустимое именованное или определяемое пользователем выражение формата. Примером именованного формата является Fixed — формат действительного числа с двумя значащими цифрами после десятичной точки

  • ПервыйДеньНедели — постоянная, определяющая первый день недели

  • ПерваяНеделяГода — постоянная, определяющая первую неделю года

При построении пользовательского числового формата возможно использование следующих символов.

0

Резервирует позицию цифрового разряда. Отображает цифру или нуль. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится о, функция отображает эту цифру аргумента, если нет — в этой позиции отображается нуль

#

Резервирует позицию цифрового разряда. Отображает циф~"; ру или ничего не отображает. Если у числа, представлен-1 ного аргументом, есть какая-нибудь цифра в той позиции! разряда, где в строке формата находится #, функция ото-1 бражает эту цифру аргумента, если нет — в исходной пози-1 ции не отображается ничего. Действие данного символа аналогично действию о, за исключением того, что лидирующие нули не отображаются

.

Резервирует позицию десятичного разделителя

%

Резервирует процентное отображение числа

,

Разделитель разряда сотен от тысяч

:

Разделитель часов, минут и секунд в категории форматовВремя(Time)

/

Разделитель дня, месяца и года в категории форматов Дата(Date)

E+, E-, e+, e-

Разделитель мантиссы и порядка в экспоненциальном формате

Кроме функций Val и Str в VBA имеются следующие функции преобразования типов выражений из данного в указанный.

Функция

Тип, в который преобразуется выражение

CBool (Выражение)

Boolean

CByte (Выражение)

Byte

CCur (Выражение)

Currency

CDate (Выражение)

Date

СDbl (Выражение)

Double

CDec (Выражение)

Decimel

CInt (Выражение)

Integer

CLng (Выражение)

Long

CSng (Выражение)

Single

CVar (Выражение)

Variant

CStr (Выражение)

String

Функции обработки строк

В VBA имеются следующие функции обработки строковых выражений.

Функция

Возвращаемое выражение

Asc

Возвращает ASCII-код начальной буквы строки. Синтаксис:

Asc(Строка)

Chr

Преобразует ASCII-код в строку. Синтаксис:

Chr(Код)

Например Chr (13) — переход на новую строку, Chr(97) = "а"

Lcase

Преобразует строку к нижнему регистру.

Синтаксис:

Lcase(Строка)

Ucase

Преобразует строку к верхнему регистру.

Синтаксис:

Ucase(Строка)

Left

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

Синтаксис:

Left(string, length)

Аргументы:

  • length — число символов

  • string —исходная строка

Right

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

Синтаксис:

Right(string, length)

Аргументы:

  • length — число символов

  • string — исходная строка

Mid

Возвращает подстроку строки, содержащую указанное число символов

Синтаксис:

Mid(string, start [, length])

Аргументы:

  • string — строковое выражение, из которого извлекается подстрока

  • start — позиция символа в строке string, с которого начинается нужная подстрока

  • length — число возвращаемых символов подстроки.

Len

Возвращает число символов строки.

Синтаксис:

Len(Строка)

LTrim

Возвращает копию строки без пробелов в начале

Синтаксис:

LTrim(Строка)

Rtrim

Возвращает копию строки без пробелов в конце.

Синтаксис:

RTrimfСтрока)

Trim

Возвращает копию строки без пробелов в начале и в конце

Синтаксис:

Trim(Строка)

Space

Возвращает строку, состоящую из указанного числа пробелов.

Синтаксис:

Space(Число)

String

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

Синтаксис:

String(number,character)

Аргументы:

  • number — число повторений символа

  • character — повторяемый символ

StrComp

Возвращает результат сравнения двух строк.

Синтаксис:

StrComp(stringl, string2 [, compare])

Аргументы:

  • stringl и string2 — два любых строковых выражения

  • compare — указывает способ сравнения строк. Допустимые значения: 0 (двоичное сравнение), 1 (посимвольное сравнение без учета регистра)

Возвращаемые значения:

  • string1 меньше, чем string2, то -1

  • string1 равняется string2, то О

  • string1 больше, чем string2, то 1

InStr

Возвращает позицию первого вхождения одной строки внутри другой строки.

Синтаксис:

InStr([start, ]stringl, string2[, compare])

Аргументы:

  • start — числовое выражение, задающее позицию, с которой начинается каждый поиск. Если этот аргумент опущен, поиск начинается с первого символа строки

Возвращаемое выражение

  • stringl — строковое выражение, в котором выполняется поиск

  • string2 — искомое строковое выражение

  • compare — указывает способ сравнения строк. Допустимые значения: 0 (для двоичного сравнения), 1 (посимвольное сравнение без учета регистра).

Функции времени и даты

В VBA имеются следующие функции времени и даты.

Функция

Возвращаемое выражение

Date

Возвращает значение типа Variant (Date), содержащее текущую системную дату

Time

Возвращает значение типа Variant (Date), содержащее текущее время по системным часам компьютера

Now

Возвращает значение типа Variant (Date), содержащее текущую дату и время по системному календарю и часам компьютера

Hour, Minute, Second

Возвращают значения типа Variant (integer), содержащее целое число, которое представляет часы, минуты и секунды в значении времени.

Синтаксис:

Hour(время)

Minute(время)

Second(время)

  • время — значение времени или выражение, его определяющее

В следующем примере переменной Час присваивается 16, Минута — 35 и Секунда — 17: РасчетноеВремя = #4:35:17 РМ#

Час = Hour(РасчетноеВремя)

Минута = Minute(РасчетноеВремя)

Секунда = Second(РасчетноеВремя)

Day, Month, Year

Возвращает значение типа Variant (integer), содержащее целое число, которое представляет день, месяц, год в значении даты.

Синтаксис:

Month(дата)

Year(дата)

  • дата —значение даты или выражение, ее определяющее

В следующем примере переменной День присваивается 17

Месяц — May, Год — 1960:

ДеньРождения = #Мау 17, 1960#

День = Day(ДеньРождения)

Месяц = Month(День Рождения)

Год = Year(ДеньРождения)

Weekday

Возвращает значение типа Variant (Integer), содержащее целое число, представляющее день недели.

Синтаксис:

Weekday(date, [firstdayofweek])

  • date — выражение, представляющее дату

  • firstdayofweek — указывает первый день недели. Если этот аргумент опущен, подразумевается vbSunday (воскресенье). Допустимы также значения: vbMonday (понедельник), vbTuesday (вторник), vbWednesday (среда), vbThursday (четверг), vbFriday (пятница) и vbSaturday (суббота)

В следующем примере переменной ДеньНедели присваивается 3, т. е. вторник:

ДеньРождения = #Мау 17, 1960#

ДеньНедели = Weekday(ДеньРождения)

Timer

Возвращает значение типа Single, представляющее число секунд, прошедших после полуночи.

DateDiff

Возвращает значение типа Variant (Long), указывающее число временных интервалов между двумя датами.

Синтаксис:

DateDiff(interval, datel, date2[, _

firstdayofweek[, firstweekofyear]])

Аргументы:

  • interval — строковое выражение, указывающее тип временного интервала, который следует использовать при вычислении разности между датами datel и date2. Допустимые значения: уууу (год), q (квартал), m (месяц), у (день года), d (день месяца), w (день недели), ww (неделя), h (часы), m (минуты), s (секунды)

  • datel, date2 — значения типа Variant (Date). Две даты. разность между которыми следует вычислить

  • firstdayofweek — постоянная, указывающая первый день недели

  • firstweekofyear— постоянная, указывающая первую неделю года

В следующем примере переменной ПрожилМесяцевСРождения присваивается 465:

ПрожилМесяцевСРождения = DateDiff("m", #5/17/60#, Now)

DatePart

Возвращает значение типа Variant (Integer) , содержащее указанный компонент даты.

Синтаксис:

DatePart (interval, date [, firstdayofweek [,firstweekofyear] ] )

DateAdd

Возвращает значение типа Variant ( Date ) , содержащее дату, к которой добавлен указанный временной интервал.

Синтаксис:

DateAdd( interval, number, date)

Аргументы:

  • interval — строковое выражение, указывающее тип добавляемого временного интервала

  • number — числовое выражение, указывающее число временных интервалов, которое следует добавить. Оно может быть положительным (для получения более поздних дат) или отрицательным (для получения более ранних дат).

  • date — значение типа Variant ( Date ) или литерал даты, представляющий дату, к которой добавляется указанный временной интервал

В следующем примере переменной День присваивается 03/17/63:

День = DateAddC'm", 34, #05/17/60#)

TimeSerial

Возвращает значение типа Variant (Date) , содержащее значение времени, соответствующее указанным часу, минуте и секунде.

Синтаксис:

TimeSerial (hour, minute, second)

Аргументы:

  • hour, minute и second — значения типа Variant (Integer)

В данном примере переменной Время присваивается 16:35: 17 :

Время = TimeSerial (16, 35, 17)

DateSerial

Возвращает значение типа Variant (Date) , соответствующее указанному году, месяцу и дню.

Синтаксис:

DateSerial (year, month, day)

Аргументы:

  • year, month и day — значения типа Integer

В следующем примере переменной дата присваивается 05/17/60:

Дата = DateSerial (1960, 5, 17)

TimeValue

Преобразует строку в формат времени

ФУНКЦИИ ВЫБОРА

Кроме перечисленных выше основных категорий функций в VBA имеются также функции выбора, которые дублируют некоторые аспекты операторов условного перехода. Ниже приведены эти функции.

Функция

Возвращаемое выражение

Iif

Возвращает одну из двух альтернатив.

Синтаксис:

IIf(expr, truepart, falsepart)

  • expr — проверяемое выражение

  • truepart — значение или выражение, возвращаемое, если ехрг имеет значение True

  • falsepart — значение или выражение, возвращаемое, если ехрг имеет значение False

В следующем примере, если значение переменной ОценкаЦифрой равно 5, то переменной ОценкаПрописыо присваивается строковая константа Отлично. В противном случае ей присваивается значение

Не отлично:

ОценкаПрописыо = Ilf(ОценкаЦифрой = 5, "Отлично", if

"Не отлично")

Choose

Возвращает значение, выбранное из списка аргументов.

Синтаксис:

Choose(индекс, вариант-1[, вариант-2, ... [, вариант-п]])

  • индекс — числовое выражение или поле, значением которого является число, лежащее между 1 и числом элементов в списке

  • вариант — выражение типа Variant, содержащее один из элементов списка

Действие функции choose: если индекс равняется 1, возвращается первый элемент списка, если индекс равняется 2, возвращается второй элемент списка и т. д.

Функцию choose можно использовать для выбора одного из возможных значений, представленных в виде списка. В следующем примере, если аргумент Выбор принимает значение 3, то переменной РезультатВыборы присваивается значение "три": РезультатВыборы = Choose(Выбор, "один", "два", "три")

Switch

Возвращается значение, соответствующее первому истинному выражению в списке.

Синтаксис:

Switch(выражение-1, значение-1[, выражение-2, значение-2 [, выражение-n, значение-п]])

  • выражение — выражение типа Variant, подлежащее вычислению

  • значение — возвращаемое значение или выражение, если соответствующее выражение принимает значение True

В следующем примере функция по указанной фамилии возвращает название должности сотрудника некоторой фирмы: Должность = Switch(Фамилия = "Парижский", "Президент", _ Фамилия = "Быстрое", "Менеджер", _ Фамилия = "Курочкина", "Референт")

ФУНКЦИИ, ВОЗВРАЩАЮЩИЕ СТРОКИ

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

  • Для экономии памяти, если в программе имеется очень много переменных

  • При выполнении прямой записи данных в файлы с произвольным доступом

Перечисленные ниже функции возвращают значения типа string, если к их имени добавляется символ доллара ($). Эти функции имеют такое же применение и синтаксис, как и их эквиваленты без символа доллара, возвращающие тип Variant.

Chr$

CurDir$

Date$

Dir$

Error$

Format$

Input$

InputB$

LCase$

Left$

LTrim$

Mid$

Right$

Rtrim$

Space$

Str$

String$

Time$

Trim$

Ucase$

ВСТРОЕННЫЕ ДИАЛОГОВЫЕ ОКНА

Проектах VBA часто встречаются две разновидности диалоговых окон: окна сообщений и окна ввода. Они встроены в VBA, и если их возможностей достаточно, то можно обойтись без проектирования диалоговых окон. Окно сообщений (MsgBox) выводит простейшие сообщения для пользователя, а окно ввода (inpuBox) обеспечивает ввод информации.

Функция

InputBox

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

Синтаксис:

InputBox (prompt [, title] [, default] [, xpos] _ [, ypos] [, helpfile, context])

Аргументы:

  • prompt — строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (сьг(13)), символа перевода строки (chr (Ю)) или комбинацию этих символов (Chr(13) & Chr (10))

  • title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

  • default — строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым

  • xpos — числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали

  • ypos — числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана

  • helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо наличие также аргумента context

context — числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо наличие также аргумента helpfile

Процедура

MsgBox

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

Синтаксис:

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Аргументы:

  • prompt — строковое выражение, отображаемое как сообщение в диалоговом окне

  • buttons — числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0. Значения констант, определяющих число и тип кнопок используемого значка, приведены в табл. 11.1—11.3

  • title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

  • helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо указать также аргумент context

  • context — числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо указать также аргумент

Таблица 11.1. Значения аргумента buttons процедуры MsgBox, определяющие отображаемые кнопки в диалоговом окне

Константа

Значение

Отображаются кнопки

vbOKOnly

0

vbOKCancel

1

vbAbortRetryIgnore

2

vbYesNoCancel

3

vbYesNo

4

vbRetryCancel

5

Таблица 11.2. Значения аргумента buttons процедуры MsgBox, определяющие отображаемые информационные значки в диалоговом окне

Константа

Значение

Отображаются кнопки

vbCritical

16

vbQuestion

32

vbExclamation

48

vbInformation

64

Таблица 11.3. Значения аргумента buttons процедуры MsgBox, определяющие основную кнопку в диалоговом окне

Константа

Значение

Номер основной кнопки

vbDefaultButton1

0

1

vbDefaultButton2

256

2

vbDefaultButton3

512

3

vbDefaultButton4

768

4

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

Константа

Значение

Нажатая кнопка

vbOK

1

OK

vbCancel

2

Отмена (Cancel)

vbAbort

3

Прервать (Abort)

vbRetry

4

Повторить (Retry)

vblgnore

5

Пропустить (Ignore)

vbYes

6

Да (Yes)

vbNo

7

Нет (No)

Приведем пример использования окон сообщений. В результате действия приведенной ниже процедуры ТестОкон появится диалоговое окно пример окна ввода с полем ввода (рис. 11.1). Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например Андрей. Нажмем кнопку ОК. На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия (рис. 11.2). Если пользователь не введет имя в поле ввода диалогового окна пример окна ввода или нажмет кнопку Отмена, то компьютер выразит свое неудовлетворение действиями пользователя отображением диалогового окна Еще один пример окна сообщения (рис. 11.3).

Рис. 11.1.-Диалоговое окно Пример окна ввода

Рис. 11.2.-Диалоговое окно Пример окна сообщения

Рис. 11.3.-Диалоговое окно Ещё один пример окна сообщения

Private Sub ТестОкон ()

‘ Описание переменной

Dim ИмяКлиента As String

‘ Ввод имени пользователя

ИмяКлиента = InputBox("Введите ваше имя", "Пример окна ввода”)

‘ Реакция программы на ввод имени пользователя

if ИмяКлиента <> “” Then

MsgBox "Привет, " & ИмяКлиента, vblnformation, "Пример окна сообщения"

Else

MsgBox "Невежа, ты забыл ввести свое имя " & ИмяКлиента, vbExclamation,_

"Еще один пример окна сообщения"

End If

End Sub

Приведем еще один пример использования диалоговых окон. Этот пример позволяет отобразить на экране диалоговое окно с тремя кнопками Да, Нет, Отмена и информационным знаком. Клавише <Enter> назначена функция кнопки Да. По нажатию одной из этих кнопок на экране отображается сообщение, подтверждающее нажатие.

Sub ТриКнопки()

Dim Сообщение As String

Dim Кнопка As Integer i

' В переменной Сообщение задается структура диалогового окна ’

Сообщение = vbYesNoCancel + vbQuestion + vbbefaultButtonl

‘ В переменную Кнопка вводится целое число, возвращаемое VsgBox при нажатии кнопки

Кнопка= MsgBox("Выбираете Да, Нет или Отмена?", Сообщение, "Еще пример”)

' В зависимости от значения переменной Кнопка,

' на экране отображается соответствующее сообщение

Select Case Кнопка

Case vbYes

MsgBox "Выбрали Да", vblnformation, "Еще пример"

Case vbNo

MsgBox "Выбрали Нет", vblnformation, "Еще пример"

Case vbCancel

MsgBox "Выбрали Отмена", vblnformation, "Еще пример"

End Select

End Sub

ИНСТРУКЦИИ VBA

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

  • Инструкции описания

  • Инструкции присвоения

  • Исполняемые инструкции

ОПЕРАТОР ПРИСВОЕНИЯ

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

Синтаксис:

[Let] Переменная (или Постоянная или Свойство Объекта) = Выражение

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

х = 2

х = х + 2

переменной х будет присвоено 4.

Для присвоения переменной ссылки на объект применяется инструкция Set. В следующем примере инструкция Set присваивает переменной область Диапазон А1:B3:

Set Область = Range("А1:ВЗ")

В общем случае инструкция set имеет следующий синтаксис:

Set ОбъектнаяПеременная = {[New] ОбъектноеВыражение | Nothing}

  • ключевое слово New используется при создании нового экземпляра класса;

  • ключевое слово Nothing позволяет освободить все системные ресурсы и ресурсы памяти, выделенные для объекта, на который имелась ссылка (вольно говоря, она удаляет объект из памяти).

ПЕРЕНОС СТРОКИ

Расположение символов (Пробел) + (Знак подчеркивания) в конце обеспечивает то, что последующая строка является продолжением предыдущей. При этом надо помнить, что:

  • Нельзя разбивать переносом строковые константы

  • Допустимо не более семи продолжений одной и той же строки

  • Сама строка не может состоять более, чем из 1024 символов

В следующем примере первая из конструкций является разбиением второй на две строки:

у = sin(Application.Pi()*х) + (1 + х)Л(1/2)/ _

(1 + хЛ2) у = Sin (Application. Pi () *х) + (1 + х)Л(1/2)/(1 + хЛ2)

КОММЕНТАРИИ

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

1. Делают программу легко читаемой, поясняя смысл программных кодов и алгоритма.

2. Временно отключают фрагменты программы при ее отладке.

В языке VBA существуют два способа ввода комментариев:

  • Применение апострофа ('). Его можно ставить в любом месте строки. При этом все символы, начиная от апострофа до конца строки, будут восприниматься компилятором как комментарий.

  • Применение зарезервированного слова Rem вместо апострофа.

Ниже приведен пример использования комментариев в тексте программы:

Dim a As Integer

' а — целая переменная

Dim b As String ' b — строковая переменная

РАСПОЛОЖЕНИЕ НЕСКОЛЬКИХ ОПЕРАТОРОВ НА ОДНОЙ СТРОКЕ

Использование знака двоеточия позволяет разместить несколько операторов на одной строке. Таким образом, следующие две конструкции эквивалентны:

1. х = х+1 и 2. х = х+1: у = х+2

у = х+2

2.2 ОПЕРАТОРЫ ПЕРЕХОДА И ВЫБОРА

Перечислим операторы перехода и выбора VBA.

Оператор

Действие

GoTo

Оператор безусловного перехода.

Синтаксис:

GoTo Строка

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

If Then Else

Оператор условного перехода.

Синтаксис:

If Условие Then [Инструкции] [Else Инструкции_е1зе]

Если Условие принимает значение True, то выполняется инструкция (или инструкции) после Then, если False, то выполняется инструкция (или инструкции) после Else. Ветвь Else является необязательной.

Допускается также использование формы синтаксиса в виде блока:

If Условие Then

[Инструкции]

[Elself Условие-n Then

[Инструкции_е1зе1£] ...

[Else

[Инструкции_е1зе]] End If

Select Case

Оператор выбора.

Синтаксис:

Select Case выражение

[Case списокВыражений-1

[инструкции-1]]

[Case списокВыражений-n

[инструкции-n]]

[Case Else

[инструкции_е!зе]]

End Select

инструкции-n (необязательная часть) - одна или несколько инструкций, выполняемых в том случае, если выражение совпадает с любым компонентом списка список-Выражений-n

инструкции_е!зе (необязательная часть) - одна или несколько инструкций, выполняемых в том случае, если выражение не совпадает ни с одним из предложений Case

On Error GoTo строка

Активизирует подпрограмму обработки ошибок, начало которой определяется обязательным аргументом строка, значением последнего может быть любая метка строки или номер строки. Для того чтобы предотвратить выполнение программы обработки ошибок в тех случаях, когда ошибка не возникла, необходимо помещать соответствующую инструкцию Exit Sub, Exit Function или Exit Property сразу после подпрограммы обработки ошибки, как в следующем примере:

Sub InitializeMatrix(Varl, Var2, Var3, Var4)

On Error GoTo ОбработкаОшибок

…………………..

Exit Sub

ОбработкаОшибок:

…………………..

Resume Next

End Sub

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

On Error Resume Next

Указывает, что при возникновении ошибки происходит передача управления на инструкцию, непосредственно следующую за инструкцией, вызвавшей ошибку

On Error GoTo 0

Отключает любой активизированный обработчик ошибок в текущей процедуре

ОПЕРАТОРЫ ПОВТОРА

Перечислим операторы повтора VBA

Оператор

Действие

For – Next

Синтаксис:

For Счетчик = Начало То Конец [Step Шаг] [Инструкции]

[Exit For]

[Инструкции] Next [Счетчик]

Повторяет выполнение группы инструкций, пока Счетчик изменяется от начального значения до конечного с указанным шагом. Если шаг не указан, то он полагается равным 1. Альтернативный способ выхода из цикла предоставляет инструкция Exit For

For Each - Next

Синтаксис:

For Each Элемент In Группа

[Инструкции]

[Exit For]

[Инструкции]

Next [Элемент]

Повторяет выполнение группы инструкций для каждого элемента массива или семейства.

Альтернативный способ выхода из цикла предоставляет инструкция Exit For

Do Untill – Loop

Синтаксис:

Do [While Условие]

[Инструкции]

[Exit Do]

[Инструкции] Loop

Повторяет выполнение набора инструкций, пока условие имеет значение True. Условие проверяется после выполнения инструкции по крайней мере один раз. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do

Do – Loop While

Синтаксис:

Do

[Инструкции]

[Exit Do]

[Инструкции] Loop [While Условие]

Повторяет выполнение набора инструкций, пока условие имеет значение True. Сначала выполняется инструкция, а потом проверяется условие. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do

Do While – Loop

Синтаксис:

Do [While Условие]

[Инструкции]

[Exit Do]

[Инструкции]

Loop

Повторяет выполнение набора инструкций, пока условие не примет значение True. Условие проверяется после выполнения инструкции по крайней мере один раз. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do

Do – Loop Untill

Синтаксис:

Do

[Инструкции]

[Exit Do]

[Инструкции]

Loop [While Условие]

Повторяет выполнение набора инструкций, пока условие не примет значение True. Сначала выполняется инструкция, а потом проверяется условие. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do

While - Wend

Синтаксис:

While Условие

[Инструкции]

Wend

Выполняет последовательность инструкций, пока заданное условие имеет значение True

УСЛОВНАЯ КОМПИЛЯЦИЯ

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

Синтаксис:

#Const имяКонстанты = выражение

Аргументы

имяКонстанты

Имя константы; должно соответствовать стандартным соглашениям об именах переменных

выражение

Константа в явном представлении, другая условная константа компилятора или любая их комбинация, которая включает любые арифметические или логические операторы, за исключением Is

Чтобы указать компилятору, какие фрагменты кода компилировать при разных условиях, используется инструкция #if. Оператор if является объектом компилирования в отличие от инструкции #if, которая является служебной пометкой в тексте, принимаемой компилятором к сведению.

Синтаксис:

#If выражение Then

инструкции

[#Elself выражение-n Then

[инструкции__е!зеif] ]

[#Else

[инструкции_е!зеif ] ]

#End If

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

#Const WinPl =1

‘ если Windows95, то Const WinPl = 1

‘ если Windows NT, то Const WinPl =2

#If WinPl = 1 Then ФайлЗаставка = Start95.bmp"

#If WinPl = 2 Then ФайлЗаставка = "StartNT.bmp"

Соседние файлы в предмете Информатика