|
Другие операции
[Строка1] & [Строка2] | Сложение строк. Для сложения строк допустимо использование операции [Cтрока1] + [Строка2], но предпочтительнее, во избежания путаницы, применять операцию со знаком & |
Приоритеты операций
VBA выполняет операции в соответствии с их приоритетами, что обеспечивает однозначность в трактовании значений выражений. Приведем приоритеты выполнения операций.
Приоритет | Операция |
Вызов функции и скобки | |
^ | |
- (смена знака) | |
*, / | |
\ | |
Mod | |
+, - | |
>, <, >=, <=, <>,= | |
Not | |
And | |
Or | |
Xor | |
Equ | |
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 — формат действительного числа с двумя значащими цифрами после десятичной точки · ПервыйДеньНедели — постоянная, определяющая первый день недели · ПерваяНеделяГода — постоянная, определяющая первую неделю года
|
При построении пользовательского числового формата возможно использование следующих символов.
Резервирует позицию цифрового разряда. Отображает цифру или нуль. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится о, функция отображает эту цифру аргумента, если нет — в этой позиции отображается нуль | |
# | Резервирует позицию цифрового разряда. Отображает циф~"; ру или ничего не отображает. Если у числа, представлен-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 | ||
vbOKCancel |
| |
vbAbortRetryIgnore |
| |
vbYesNoCancel |
| |
vbYesNo |
| |
vbRetryCancel |
|
Таблица 11.2. Значения аргумента buttons процедуры MsgBox, определяющие отображаемые информационные значки в диалоговом окне
Константа | Значение | Отображаются кнопки |
vbCritical | ||
vbQuestion | ||
vbExclamation | ||
vbInformation |
Таблица 11.3. Значения аргумента buttons процедуры MsgBox, определяющие основную кнопку в диалоговом окне
Константа | Значение | Номер основной кнопки |
vbDefaultButton1 | ||
vbDefaultButton2 | ||
vbDefaultButton3 | ||
vbDefaultButton4 |
Дата добавления: 2015-11-04; просмотров: 20 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |