Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Тема 3. Использование языка Visual Basic For applications для реализации математических моделей и численных методов (6 часов) 4 страница



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

[Строка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 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.068 сек.)







<== предыдущая лекция | следующая лекция ==>