Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Если выражение содержит несколько операций, то приоритет их выполнения следующий:
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-28; Прочитано: 3491 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!