Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Приоритет выполнения операций




Виды операций

Выражения

Dim X(1 TO 5) As Integer, Y(1 To 10, 1 To 20) As Double

Описание массивов

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

Массив -это структурированный тип данных, который представляет собой последовательность ячеек памяти, имеющих общее имя и хранящих данные одного типа. Каждый элемент массива определяется индексом (номером). Количество элементов в массиве называется размерностью массива. Массив описывается следующей конструкцией:

Dim ИМЯ_МАССИВА ( СПИСОК_РАЗМЕРНОСТЕЙ ) As ИМЯ_ТИПА

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

Например.

Здесь Х - одномерный массив, состоящий из 5 элементов целого типа, Y - двумерный массив, у которого 10 строк и 20 столбцов с элементами числового типа двойной точности.

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

Операции бывают арифметические, отношения и логические:

арифметические операции:
^ возведение в степень,
* умножение,
/ деление,
\ деление нацело,
mod остаток от деления,
+ плюс,
- минус;

операции отношения:
< меньше,
> больше,
<= меньше или равно,
>= больше или равно,
= равно,
<> не равно;

логические операции:
Not логическое отрицание,
And логическое "И",
Or логическое "ИЛИ".

Результатом логической операции может быть одно из двух значений:
True ("истина") или False ("ложь").

 

Если выражение содержит несколько операций, то приоритет их выполнения следующий:

1. Сначала выполняются арифметические операции в таком порядке, как они представлены в таблице 2.2.

Таблица 2.2. Приоритет арифметических операций

Описание операции Обозначение в VВА
Унарный минус (изменение знака) - (в начале выражения)
Возведение в степень ^
Умножение и деление *, /
Деление нацело и остаток от деления \, Mod
Сложение и вычитание +, -

2. Далее операции отношения (они имеют одинаковый приоритет).

3. Последними выполняются логические операции в таком порядке, как они представлены в таблице 2.3.

Таблица 2.3. Приоритет логических операций

Описание операции Обозначение в VВА
Логическое отрицание Not
Логическое "И" And
Логическое "ИЛИ" Or

 

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

Выражения бывают арифметические, отношения и логические.

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

 

Таблица 2.4. Стандартные математические функции VBA

Математическая запись Имя функции в VBA Описание
½Х½ Abs(число) Возвращает значение, тип которого совпадает с типом переданного аргумента, равное абсолютному значению указанного числа.
arctg X Atn(число) Возвращает значение типа Double, содержащее арктангенс числа.
cos X Cos(число) Возвращает значение типа Double, содержащее косинус угла.
]X[ Int(число) Возвращает значение типа, совпадающего с типом аргумента, которое содержит целую часть числа.
ln X Log(число) Возвращает значение типа Double, содержащее натуральный логарифм числа.
eX Exp(число) Возвращает значение типа Double, содержащее результат возведения числа e (основание натуральных логарифмов) в указанную степень.
Sign X Sgn(число) Возвращает значение типа Variant (Integer), соответствующее знаку указанного числа.
sin X Sin(число) Возвращает значение типа Double, содержащее синус угла.
  Sqr(число) Возвращает значение типа Double, содержащее квадратный корень указанного числа.
tg X Tan(число) Возвращает значение типа Double, содержащее тангенс угла.

 

Выражения отношения определяют истинность или ложность результата при сравнении двух операндов. Сравнивать можно данные любого одинакового типа. Результат операции отношения только логический: True - "истина" или False - "ложь".

Логические выражения. Результатом логического выражения является логическое значение True или False. Простейшими видами логических выражений являются: логическая константа, логическая переменная, логическая функция, выражение отношения. Логические операции выполняются только над операндами логического типа.

Пример. Записать 1£Х£5 и определить значение выражения при Х=3.1

Выражение в VВА будет выглядеть так:

X>=1 And X<=5

 

Результатом выражения будет True.

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

Чтобы получить перечень всех производных математических функций и правила их формирования, достаточно набрать имя любой известной математической функции (например, SIN), а затем нажать клавишу F1 и ниже описания выбранной функции выбрать ссылку на Производные математические функции.

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

 

 

Таблица 2.5. Производные математические функции

Математическая запись Название функции Комбинация встроенных функций
sc X Секанс 1/Cos(X)
csc X Косеканс 1/Sin(X)
ctg X Котангенс 1/Tan(X)
arcsin X Арксинус Atn(X/Sqr(-X*X+1))
arccos X Арккосинус Atn(-X/Sqr(-X*X+1))+2*Atn(1)
arcsc X Арксеканс Atn(X/Sqr(X*X-1))+Sgn((X)-1)*2*Atn(1)
arccsc X Арккосеканс Atn(X/Sqr(X*X-1))+(Sgn(X)-1)*2*Atn(1)
arcctg X Арккотангенс Atn(X)+2*Atn(1)
sh X Гиперболический синус (Exp(X)-Exp(-X))/2
ch X Гиперболический косинус (Exp(X)+Exp(-X))/2
th X Гиперболический тангенс (Exp(X)-Exp(-X))/(Exp(X)+Exp(-X))
sch X Гиперболический секанс 2/(Exp(X)+Exp(-X))
csch X Гиперболический косеканс 2/(Exp(X)-Exp(-X))
сth X Гиперболический котангенс (Exp(X)+Exp(-X))/(Exp(X)-Exp(-X))
arsh X Гиперболический арксинус Log(X+Sqr(X*X+1))
arch X Гиперболический арккосинус Log(X+Sqr(X*X-1))
arth X Гиперболический арктангенс Log((1+X)/(1-X))/2
arsch X Гиперболический арксеканс Log((Sqr(-X*X+1)+1)/X)
arcsch X Гиперболический арккосеканс Log((Sgn(X)*Sqr(X*X+1)+1)/X)
arcth X Гиперболический арккотангенс Log((X+1)/(X-1))/2
lognX Логарифм по основанию N Log(X)/Log(N)

Основные операторы языка VBA

3.1. Правила записи операторов

При записи операторов необходимо придерживаться следующих правил:

- Каждый новый оператор записывается с новой строки.

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

- Если оператор не помещается в одной строке, то необходимо поставить в конце строки пробел и знак подчеркивания (_), а затем продолжить не поместившуюся часть на следующей строке.

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

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

ИМЯ_ПЕРЕМЕННОЙ = ВЫРАЖЕНИЕ

Сначала вычисляется выражение в правой части, а затем результат присваивается переменной, стоящей в левой части.

Например. Записать с помощью оператора присваивания следующее математическое выражение:

На VВА это выражение можно записать в виде следующего оператора:

Y = a^(1/3)+(a^2+Exp(-b))/(Sin(a)^2-Log(b))

3.3. Операторы ввода-вывода

 

3.3.1. Оператор и функция MsgBox

Оператор MsgBox осуществляет вывод информации в диалоговом окне и устанавливает режим ожидания нажатия кнопки пользователем.

Он имеет следующий синтаксис:

MsgBox Сообщение[,Кнопки][, Заголовок]

Аргументы:

Сообщение - обязательный аргумент, задающий в окне выводимое информационное сообщение. Может состоять из нескольких текстовых строк, объединенных знаком &. Использование в этом аргументе Chr(13) приводит к переходу на новую строку при выводе информации.

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

Заголовок - задает заголовок окна.

Функция MsgBox возвращает значение типа Integer, указывающее, какая кнопка была нажата в диалоговом окне.

Таблица 3.1. Допустимые значения переменной кнопки

Отображение Аргумент
Кнопка ОК VbOKOnly
Кнопки ОК и Отмена VbOKCancel
Кнопки Да и Нет VbYesNo
Кнопки Да, Нет и Отмена VbYesNoCancel
Кнопки Прекратить, Повторить и Игнорировать VbAbortRetryIgnore
Кнопки Повторить и Отмена. VbRetryCancel
Информационный знак VbInformation
Знак VbCritical
Знак вопроса VbQuestion
Знак восклицания VbExclamation

Например. Вывести сообщение о текущей дате.

Для этого можно использовать следующий оператор:

MsgBox "Сегодня на календаре" & Date,, "Внимание"


В результате будет выведено следующее окно (рис.3.1).

Рис. 3.1

После щелчка по кнопке ОК окно сообщения закроется, и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом MsgBox.

 

3.3.2. Функция InputBox

Функция InputBox осуществляет ввод значений переменных с помощью окна ввода и имеет следующий синтаксис:

Имя_Переменной = InputBox(Сообщение[, Заголовок])

Аргументы:

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

Заголовок - задает заголовок окна.

Например, Ввести значение переменной N с клавиатуры, предусмотрев значение по умолчанию равное 10.

Для этого можно использовать следующий оператор:

N = InputBox("Введите N", "Ввод исходных данных",10)

В результате будет выведено следующее окно для ввода значения переменной N (рис.3.2).

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

Если же значение по умолчанию не подходит пользователю, то перед щелчком по кнопке ОК необходимо ввести нужное значение переменной N.

 

3.4. Условный оператор IF

Для реализации разветвляющегося вычислительного процесса в VBA используется оператор If…Then…Else, который представляет собой простейшую форму проверки условий. Он имеет следующий синтаксис:

If УСЛОВИЕ Then ОПЕРАТОР_1 Else ОПЕРАТОР_2

ОПЕРАТОР_1 выполняется, если УСЛОВИЕ истинно, в противном случае выполняется ОПЕРАТОР_2. При этом оператор If…Then…Else записывается в одну строку.

УСЛОВИЕ – это выражение логического типа. Результат выражения всегда имеет булевский тип. Выражение может быть простым и сложным. При записи простых условий могут использоваться все возможные операции отношения, указанные в табл. 3.2.

Таблица 3.2. Логические отношения

Операция Название Выражение Результат
= Равно A = В True, если А равно В
<> Не равно A<>В True, если А не равно В
> Больше А>B True, если А,больше В
< Меньше A<B True, если А меньше В
>= Больше или равно A>=B True, если А больше или равно В
<= Меньше или равно A<=B True, если А меньше или равно В

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

Таблица 3.3. Логические операции

    Название Выражение А В Результат
Not Логическое отрицание Not A False True   True False
And Логическое И A And B True True False False True False True False True False False False
Or Логическое ИЛИ A Or B True True False False True False True False True True True False

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

If УСЛОВИЕ Then

БЛОК_ОПЕРАТОРОВ_1

Else

БЛОК_ОПЕРАТОРОВ_2

End If

В условном операторе может проверяться несколько условий. В этом случае условный оператор имеет вид:

If УСЛОВИЕ_1 Then

БЛОК_ОПЕРАТОРОВ_1

ElseIf УСЛОВИЕ_2 Then

БЛОК_ОПЕРАТОРОВ_2

Else

….

End If

Пример 1. Написать часть программы для алгоритма на рис. 3.3.

 

 

Пример 2. Написать часть программы для алгоритма на рис. 3.4.

 

 

3.5. Оператор выбора Select Case

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

Select Case ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ

Case ЗНАЧЕНИЯ_1

ОПЕРАТОРЫ_1

Case ЗНАЧЕНИЯ_2

ОПЕРАТОРЫ_2

...

Case ЗНАЧЕНИЯ_N

ОПЕРАТОРЫ_N

[ Case Else

ИНАЧЕ_ОПЕРАТОРЫ]

End Select

ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ может иметь любой скалярный тип, кроме вещественного. ЗНАЧЕНИЯ состоят из произвольного количества значений или диапазонов, отделенных друг от друга запятыми.

Тип ЗНАЧЕНИЙ должен совпадать с типом ПРОВЕРЯЕМОГО_ВЫРАЖЕНИЯ.

Сначала вычисляется ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ. Если его значение совпадает с одним из значений ЗНАЧЕНИЯ_I, то выполнятся ОПЕРАТОРЫ_I и управление передается оператору, стоящему после End Select. Если его значение не совпадает ни с одним из значений ЗНАЧЕНИЯ_I, то выполнятся ИНАЧЕ_ОПЕРАТОРЫ и управление передается оператору, стоящему после End Select

Например. Написать часть программы для алгоритма на рис. 3.5, определяющего значение переменной S в зависимости от значения переменной n.

 

 

3.6. Операторы цикла

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

For СЧЕТЧИК=НАЧ_ЗНАЧЕНИЕ Тo КОН_ЗНАЧЕНИЕ Step ШАГ

БЛОК_ОПЕРАТОРОВ

[Exit For]

БЛОК_ОПЕРАТОРОВ

Next СЧЕТЧИК

Цикл For…Next перебирает значения переменной СЧЕТЧИК, которая является параметром цикла, от начального до конечного значения с указанным шагом изменения. При этом обеспечивается выполнение блока операторов тела цикла при каждом новом значении счетчика. Если Step ШАГ в конструкции отсутствует, то по умолчанию считается, что шаг равен 1. По оператору Exit For можно выйти из оператора цикла до того, как СЧЕТЧИК достигнет последнего значения.*

Для перебора объектов из группы подобных объектов, например, ячеек из диапазона или элементов массива, удобно использовать оператор цикла For… Each…Next.

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

БЛОК_ОПЕРАТОРОВ

[Exit For]

БЛОК_ОПЕРАТОРОВ

Next Элемент

В VBA для организации циклов с неизвестным заранее числом повторений используются и другие операторы цикла:

циклы с предусловием – Do While … Loop,

Do Until … Loop;

циклы с постусловием – Do … Loop While,

Do … Loop Until.

Ниже приведен синтаксис этих операторов цикла:

' Цикл с предусловием Do While … Loop

Do While УСЛОВИЕ

БЛОК_ОПЕРАТОРОВ

[Exit Do]

БЛОК_ОПЕРАТОРОВ

Loop

 

Примечание. Не рекомендуется принудительно изменять значения параметра цикла, его начального и конечного значения в теле цикла For…Next.

 

' Цикл с предусловием Do Until … Loop

Do Until УСЛОВИЕ

БЛОК_ОПЕРАТОРОВ

[Exit Do]

БЛОК_ОПЕРАТОРОВ

Loop

' Цикл с постусловием Do … Loop While

Do

БЛОК_ОПЕРАТОРОВ

[Exit Do]

БЛОК_ОПЕРАТОРОВ

Loop While УСЛОВИЕ

' Цикл с постусловием Do … Loop Until

Do

БЛОК_ОПЕРАТОРОВ

[Exit For]

БЛОК_ОПЕРАТОРОВ

Loop Until УСЛОВИЕ

Оператор Do While…Loop обеспечивает многократное повторение блока операторов до тех пор, пока УСЛОВИЕ соблюдается, а оператор Do Until…Loop пока УСЛОВИЕ не соблюдается. Операторы Do…Loop While, Do…Loop Until отличаются от перечисленных выше операторов тем, что сначала блок операторов выполняется по крайней мере один раз, а потом проверяется УСЛОВИЕ.

Для избежания зацикливания в теле цикла должен быть хотя бы один оператор, который изменяет значения переменных, стоящих в УСЛОВИИ.

Оператор Exit Do обеспечивает досрочный выход из оператора цикла.

Пример 1. Составить фрагмент программы для алгоритма на рис. 3.6.

Пример 2. Составить фрагмент программы для алгоритма на рис. 3.7.

Пример 3. Составить фрагмент программы, соответствующей алгоритму

Структура программы. Модули, процедуры и функции

Модуль представляет собой текстовый ASCII-файл с программным кодом, содержащим подпрограммы, переменные и константы. Проект может состоять из множества программных модулей. Для их создания необходимо выполнить команду Вставка Модуль. Рабочее окно модуля представлено на рис. 4.1.

 

 

Основу программ в VBA составляют процедуры и функции.

Процедура Sub– это обособленная совокупность операторов VBA, выполняющая определенные действия. В общем случае процедура принимает некоторые параметры (переменные, которые передаются процедуре в качестве исходных данных), выполняет программу и может возвращать результирующие значения, которые присваиваются параметрам внутри процедуры. Однако чаще используются процедуры без параметров. Например, процедуры, выполняющиеся при возникновении определенных событий. Вложенность процедур в другие процедуры не допускается. Структура процедуры следующая:

[ДОСТУП] Sub ИМЯ_ПРОЦЕДУРЫ ([СПИСОК_ПАРАМЕТРОВ])

ТЕЛО_ ПРОЦЕДУРЫ

End Sub

Ключевое слово ДОСТУП является необязательным и определяет область видимости процедуры. Public указывает, что процедура доступна для всех других процедур во всех модулях (глобальная). Private указывает, что процедура доступна для других процедур только того модуля, в котором она описана (локальная). СПИСОК_ПАРАМЕТРОВ также является необязательным элементом и позволяет передавать процедуре различные исходные данные при вызове, которые называются формальными параметрами. При этом ключевое слово Dim не указывается. ТЕЛО_ПРОЦЕДУРЫ состоит из описательной части и блока операторов, выполняющихся один за другим. Если необходимо прекратить выполнение процедуры в некотором конкретном месте, это можно сделать с помощью оператора Exit Sub. ИМЯ_ПРОЦЕДУРЫ – это любой идентификатор, определенный пользователем. Идентификатор – это последовательность букв, цифр и символа подчеркивания, начинающаяся с буквы (пробелы внутри идентификатора недопустимы). Имя процедуры всегда определяется на уровне модуля. Для использования процедуры в тексте программы (т.е. для её вызова), необходимо указать имя процедуры и список фактических параметров, которые должны по типу и порядку следования совпадать с формальными параметрами.

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

[ДОСТУП] Function ИМЯ_ФУНКЦИИ (СПИСОК_АРГУМЕНТОВ) As ТИП

ТЕЛО_ ФУНКЦИИ

ИМЯ_ФУНКЦИИ = ВЫРАЖЕНИЕ

End Function

ТИП определяет тип данных возвращаемого результата. В теле функции обязательно должен присутствовать, по крайней мере, один оператор, присваивающий имени функции значение вычисляемого выражения. Досрочное завершение функции возможно с помощью оператора Exit Function. В программе вызов функции осуществляется с помощью оператора присваивания, в правой части которого указывается имя функции с перечнем фактических параметров, как и любой другой встроенной функции, например, Sqr, Cos или Chr.

 

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

Для быстрого добавления в модуль подпрограмм удобно воспользоваться командой Вставка Процедура. В появившемся окне (рис. 4.2) нужно выбрать необходимые опции.

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

Пример. В MS Excel создать функцию пользователя, математически определенную следующим образом:

y = sin(x) ∙ e-5x


Создадим модуль, как указано выше (рис 4.2), и введем в него текст следующей программы:

 

 

Public Function Y(x As Single) As Single

Y = Sin(x) * Exp(- 5 * x)

End Function


Для использования созданной функции на рабочем листе MS Excel введем в ячейку А2 число 0.1. В ячейке В2 вычислим значение функции Y при x = 0.1. Для этого в ячейку В2 достаточно ввести формулу =Y(A2). Это можно сделать и с помощью Мастера функций, который будет содержать функцию Y наряду с другими встроенными функциями MS Excel (рис 4.3).

 

 

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

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

Далее располагают непосредственно текст функций и процедур, составляющих саму программу.

Разделителем операторов в одной строке при записи программы является символ “:”.

Для переноса оператора на другую строку используется символ “_” (знак подчеркивания).

 

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

Пример организации модуля:

Option Base 1

Option Explicit

‘ PI – глобальная константа

Const PI As Double = 3.14159

‘ x - глобальная переменная

Dim x As Double

‘ Функция Disc вычисляет площадь круга

Public Function Disc(R As Double) As Double

x = 2

Disc = PI * R ^ 2

End Function

‘ Функция Rec вычисляет площадь треугольника

Public Function Rec(a As Double, b As Double, c As Double) As Double

‘ p – локальная переменная

Dim p As Double

p = (a + b + c) / 2

Rec = Sqr (p * (p – a)* (p – b) * (p – c))

End Function

‘ Процедура Result вызывает функции Disc и Rec и выводит результаты

Public Sub Result ()

‘R_1, R_2, a, b, c - локальные переменные

Dim R_1 As Double

Dim R_2 As Double

Dim a As Double

Dim b As Double

Dim c As Double

R_1 = Disc(2. 5)

x = x + 2

MsgBox “ Площадь круга = “ & CStr(R_1) & “, x = “ & CStr (x)

a =1

b = 1

c = Sqr (2)

R_2 = Rec (a, b, c)

MsgBox “ Площадь треугольника = “ & CStr(R_2)

End Sub

Здесь инструкция Option Explicit указывает на необходимость описания типов переменных, используемых на данном листе модуля.

Инструкция Option Base 1 указывает, что индексация элементов массива будет начинаться с 1.

Функция Sqr вычисляет квадратный корень аргумента.

Функция CStr переводит числовой формат в строковый.

Создание форм в VBA и включение их в проекты

Просмотров: 15084


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

|

Комментарии (0)

18 февраля 2011 |

5.1. Создание форм. Свойства, события и методы форм


Форма – это главный объект, образующий визуальную основу приложения. По своей сути форма представляет собой окно, в котором можно размещать различные управляющие элементы при создании приложений. Для создания формы необходимо выполнить команду Вставка UserForm. В окне Конструктора форм появится форма, имеющая стандартный вид для ОС Windows (рис. 5.1).

 

 

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

 

Таблица 5.1. Основные свойства формы

Свойство Описание
BackColor Цвет фона для формы.
BorderStyle Определяет тип границы, окружающей форму
Caption Текст, который выводится в заголовке формы.
Font Определяет тип и вид шрифта в форме.
Height Определяет высоту формы в твипах.
(Name) Имя объекта, для программы VBA.
Width Определяет ширину формы в твипах.

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

frmForm1.Caption = "Привет"

Программы для компьютера в ОС Windows управляются событиями. Каждый раз, когда нажимается кнопка, перемещается мышь, изменяются размеры формы и т.д., ОС генерирует сообщение. Сообщение доставляется соответствующему объекту, например форме, а та генерирует соответствующее событие. Следовательно, можно составить фрагмент программы, в котором объект будет реагировать на событие определенным образом, т.е. любому стандартному событию соответствует определенная процедура. Чтобы просмотреть события связанные с формой, необходимо в режиме конструирования дважды щелкнуть на ней – появится окно программы, в котором щелкнуть на списке Процедура. В табл. 5.2 приведены наиболее часто используемые события.

 

Таблица 5.2. Основные события форм

Событие Описание
Initialize Происходит во время конфигурации и до загрузки формы в память.
Activate Происходит после загрузки формы в память.
Deactivate Происходит, если форма перестает быть активной.
Click Происходит при нажатии левой кнопки мыши на форме.

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

Private Sub UserForm_Activate()

frmForm1.Caption = "Щелчок на форме уменьшает её размеры"

End Sub

Private Sub UserForm_Click()

frmForm1.Width = frmForm1.Width / 2

frmForm1.Height = frmForm1.Height / 2

frmForm1.Caption = "Сделай это еще раз!"

End Sub

Также форма обладает набором методов и инструкций. Метод определяет действие, которое может быть выполнено с объектом. Инструкция инициирует действие. Она может выполнить метод или функцию, В табл. 5.3 и 5.4 приведены наиболее часто используемые методы и инструкции для работы формами.

Таблица 5.3. Основные методы форм

Метод Описание
Hide Скрывает объект UserForm, но не выгружает его.
Show Выводит на экран объект UserForm.

Таблица 5.4. Основные инструкции форм

Инструкция Описание
Load Загружает объект UserForm, но не отображает его на экране.
Unload Удаляет объект UserForm из памяти.

В следующем примере предполагается, что в проекте созданы две формы frmForms. При запуске проекта происходит событие Initialize для формы frmForm1, форма frmForm2 загружается и выводится на экран. Когда при помощи мыши выбирается frmForm2, она делается невидимой, и появляется форма frm Form1. Если же выбирается frmForm1, frmForm2 появляется вновь.

'Событие Initialize формы frmForm1.

Private Sub UserForm_Initialize()

Load frmForm2

frmForm2.Show

End Sub

' Событие Click для формы frmForm2

Private Sub UserForm_Click()

frmForm2.Hide

End Sub

' Событие Click для формы frmForm1

Private Sub UserForm_Click()

frmForm2.Show

End Sub

 

5.2. Выбор и использование управляющих элементов

Создание управляющих элементов на форме выполняется с помощью Панели инструментов, которая выводится на экран командой Вид Панель элементов (рис. 5.2).

 

 

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

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

Для каждого объекта проекта необходимо определить его имя. В соответствии с общепринятыми соглашениями об именах объектов первые три символа имени должны отражать вид элемента, а остальные символы - назначение. В табл. 5.5. представлены сочетания первых трех символов для наиболее часто используемых элементов.

Таблица 5.5. Рекомендуемые сочетания первых трех символов имен

Объект Первые 3 символа имени Пример имени
Форма frm frmMyForm
Надпись lbl lblInfo
Текстовое поле txt txtInput
Командная кнопка cmd cmdExit
Флажок chk chkSound
Переключатель opt optLevel
Список lsb lsbTypes
Рамка fra fraChoices
Полоса прокрутки vcb vcbSpeed
Рисунок pic picChema

Командная кнопка является самым распространенным элементом управления, и может использоваться для организации выполнения вычислений и других действий, вызова процедур и функций пользователя, открытия форм и т.д. Основные свойства командной кнопки представлены в табл. 5.6. В свойстве Caption можно ставить символ & перед буквой, которая будет использоваться в сочетании с клавишей Alt для ускоренного доступа к кнопке. Также можно перейти к кнопке клавишей Tab, а затем нажать Enter.

Таблица 5.6. Свойства командных кнопок

Свойство Описание
BackColor Цвет фона кнопки.
Caption Текст, который выводится на кнопке.
Enabled Значение False делает кнопку недоступной.
Font Определяет тип и вид шрифта на кнопке.
ForeColor Определяет цвет шрифта на кнопке.
(Name) Имя объекта, для программы VBA.
Picture Добавляет рисунок на кнопку.
PicturePosition Определяет расположение текста и рисунка на кнопке.
Visible Значение False делает кнопку невидимой.

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

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

 

Текстовое поле применяется для ввода или вывода информации. Основные свойства текстового поля представлены в табл. 5.7.

 

 

Таблица 5.7. Свойства текстового поля

Свойство Описание
Enabled Значение False делает поле недоступным.
Font Определяет тип и вид шрифта в текстовом поле.
ForeColor Определяет цвет шрифта в текстовом поле.
(Name) Имя объекта, для программы VBA.
MaxLength Определяет количество вводимых символов в текстовое поле.
PasswordChar Определяет символ, отображаемый при вводе в текстовое поле.
Text Определяет содержимое текстового поля.

Например, для очистки содержимого текстового поля в ходе выполнения программы необходимо ввести в требуемом месте программного кода команду:

txtResult.Text=" "

Основным событием текстового поля является Change, происходящее при вводе или удалении символов. Например, команду cmdMyButtum.SetFocus можно поместить в процедуру события Change текстового поля.

Надпись применяется как самостоятельно для вывода справочной информации, так и в виде "подсказок" для текстового поля, списка или другого элемента. Главное её отличие от текстового поля в том, пользователь не может изменить текст надписи (хотя его можно изменить как свойство во время выполнения программы). Основные свойства надписи представлены в табл. 5.8.

Таблица 5.8. Свойства надписи

Свойство Описание
Caption Определяет текст, содержащийся в надписи.
Font Определяет тип и вид шрифта надписи.
ForeColor Определяет цвет шрифта надписи.
(Name) Имя объекта, для программы VBA.
Picture Добавляет рисунок в надпись.
PicturePosition Определяет расположение текста и рисунка надписи.

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

Таблица 5.9. Свойства списка

Свойство Описание
(Name) Имя объекта, для программы VBA.
ListIndex Возвращает номер текущей выделенной строки списка -1.
Text Содержимое текущей выделенной строки списка.

Для списка чаще всего используются события Click и DblClick (двойной щелчок левой кнопкой мыши на одной из строк списка). Во втором случае пользователь одновременно выделяет строку и начинает ее обработку.

 

Работа со списком начинается с его заполнения методом AddItem, который может вызываться несколько раз подряд. Часто метод AddItem помещается в процедуру UserForm_Initialize(), чтобы список заполнялся при загрузке формы. Метод RemoveItem удаляет строки из списка. Метод Clear очищает сразу весь список. Следующий пример показывает, как работают списки, при этом предполагается, что в проекте создана форма с двумя списками (List1 и List2). Двойной щелчок на любой строке одного списка перемещает её в другой список. Строка включается в другой список до того, как она будет удалена из текущего.

Private Sub UserForm_Initialize()

List1.AddItem "Стол"

List1.AddItem "Стул"

List1.AddItem "Диван"

List1.AddItem "Кресло"

List1.AddItem "Кровать"

End Sub

Private Sub List1_DblClick()

List2.AddItem List1.Text

List1.RemoveItem

List1.ListIndex

End Sub

Private Sub List2_dblClick()

List1.AddItem List2.Text

List2.RemoveItem

List2.ListIndex

End Sub

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

Таблица 5.10. Свойства переключателя

Свойство Описание
Caption Задает текст, определяющий назначение переключателя.
(Name) Имя объекта, для программы VBA.
Value Значение True указывает, что переключатель выбран.

Наиболее важным является свойство Value значение True (переключатель находится в установленном состоянии), которого в режиме конструирования задается только у одного переключателя в группе. В режиме выполнения это свойство чаще всего проверяется в процедуре события Click кнопки, нажатой после установки нужного переключателя, что позволяет проверить перед вызовом следующей процедуры некоторое условие. Однако определенные действия можно выполнять сразу же после выбора переключателя в процедуре его события Click.

Флажок частично аналогичен переключателю, но в отличие от него может использоваться как отдельный самостоятельный элемент. Даже объединенные в группу флажки работают независимо друг от друга. Основные свойства флажков такие же, как и у переключателя (см. табл. 5.10). Однако свойство Value может принимать три значения (флажок находится в установленном состоянии, снятом или неопределенном).


Наиболее часто используемым событием флажков является Click, в процедуре которого можно проверять состояние флажка по свойству Value. Следующий пример иллюстрирует работу флажков, при этом предполагается, что в проекте создана форма с двумя флажками (ChkBold и ChkInalic) и текстовым полем TxtExam (рис.5.3). После ввода символов в текстовое поле, с помощью флажков можно делать текст полужирным или курсивом. Свойства FontBold и FontItalic текстового поля устанавливают способы начертания текста.

 

 

Рис. 5.3. Использование флажков

 

Private Sub Chkbold_Click()

If ChkBold.Value = True Then

TxtExam.FontBold = True

Else

TxtExam.FontBold = False

End If

End Sub

Private Sub ChkItalic_Click()

If ChkBold.Value = True Then

TxtExam.FontItalic = True

Else

TxtExam.FontItalic = False

End If

End Sub

Рамка используется для группировки переключателей или флажков, и помещается на форму раньше элементов, находящихся внутри неё. Переключатели находящиеся внутри рамки, работают как самостоятельная группа и не влияют на состояние переключателей в других рамках. Основным свойством рамки является Caption, которое задает текст, определяющий назначение элементов в рамке.

Рисунок используется для простейшего вывода изображения на форме. Он может отображать растровые файлы (.BMP), значки (.ICO), метафайлы (WMF), а также файлы в формате JPEG (.JPG) и GIF (.GIF). Основные свойства рисунка представлены в табл. 5.11.

Таблица 5.11. Свойства рисунка

Свойство Описание
Autosize Значение True подгоняет размер элемента под размер содержимого.
(Name) Имя объекта, для программы VBA.
Picture Задает файл для рисунка.

События и методы рамок и рисунков практически не используются.




Поделиться с друзьями:


Дата добавления: 2014-12-24; Просмотров: 1350; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.