Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Процедуры обработки событий




Процедуры обработки событий связаны с конкретными объектами и событиями и выполняются, когда эти события происходят. Событие (event) – это нажатие командной кнопки, выполнение директивы меню, открытие или закрытие таблицы Excel и т.п. Имя такой процедуры состоит из имени объекта и события, которые объединяются символом подчеркивания. Процедуры обработки событий имеют следующий синтаксис:

Private Sub ИмяОбъекта_Событие ()

тело процедуры (операторы)

End Sub

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

Процедуры-функции (Function)

Встроенные функции

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

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

Примеры функций Значение
Val(Строка) Преобразует строку цифровых символов в число
CStr(Число) Преобразует числовое выражение или строку в строку
CInt(Выражение) Преобразует числовое выражение или строку в число типа Integer
Cvar(Выражение) Преобразует числовое выражение или строку в число типа Variant и др.

 

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

TextBox3.Text = TextBox1.Text + TextBox2.Text

то результат вычисления будет неверным, так как в этом случае выполнится объединение строк. Например, если исходными значениями будут 100 и 200, то получится результат 100200, что, конечно, не является результатом арифметического сложения.

Для того, чтобы получить правильный результат, предварительно нужно преобразовать исходные величины строкового типа в числовые целого типа (или другого числового типа). Это преобразование может быть выполнено с помощью функции CInt. Тогда фрагмент кода для выполнения сложения будет иметь вид:

TextBox3.Text=CInt(TextBox1.Text)+ CInt(TextBox2.Text)

При выполнении этого кода будет получен правильный результат – 300. Также правильный результат будет получен, если фрагмент кода будет следующий:

TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)

В последнем фрагменте для преобразования типов применена функция Val.

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

Математические функции предназначены для выполнения типовых математических расчетов. Перечислим основные математические функции:

Примеры функций Значение
Abs(x) Абсолютная величина числа x
Cos(x) Косинус от значения параметра, заданного в радианах
Sin(x) Синус от значения параметра, заданного в радианах
Sqr(x) Квадратный корень из числа x
Rnd[(x)] Возвращает псевдослучайное число одинарной точности в интервале от 0 до 1. Необязательный параметр, устанавливает то, как генерируется следующее псевдослучайное число
Int(x) Выделение целой части числа x
Tan(x) Тангенс числа x
Atn(x) Арктангенс от значения параметра, заданного в радианах
Exp(x) Число e, возведенное в указанную степень x, где e – основание натурального логарифма
Log(x) Натуральный логарифм числа x и др.

Фрагмент кода вычисления значения квадратного корня числа 100 может иметь следующий вид:

x=100

y=Sqr(x)

В результате выполнения этого кода переменная y получит значение 10.

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

Системные функции

К системным функциям, относятся функции, действия которых напрямую зависит от работы системы Windows. К таким функциям и относятся:

· Функция InputBox – для ввода данных пользователем через системное окно;

· Функция MsgBox – для выдачи сообщений пользователю через системное окно.

Работа этих функций сопровождается появлением на экране одного из двух окон: Окна ввода (InputBox) и окна сообщения (MsgBox). Надписи на кнопках, названия полей и другие элеэлементы диалоговых окон могут отображаться на экране в английском или русском варианте, в зависимости от настроек Windows.

Рассмотрим синтаксис функции Окно ввода [1]:

InputBox(Пригл [, Загол] [, НачЗнач])

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

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

Для преобразования введенной строки в другой тип данных используйте функции преобразования типов: Val(), CInt(), Cvar() и другие.

В качестве примера на рис. 15 приведено окно, созданное с помощью оператора:

A = InputBox(“Введите значение:”, “Пример окна InputBox”)

 

Рис. 15. Пример Окна ввода

Окно сообщения создаётся функцией MsgBox, которая имеет такой синтаксис[2]:

MsgBox(Текст [, Опция] [, Загол])

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

Есть другая, более простая и чаще применяемая форма синтаксиса, когда функция не возвращает никакого значения, а действует просто как оператор – выдаёт информацию в Окне сообщения. В этом случае в записи функции отсутствуют скобки (круглые):

MsgBox Текст [, Кнопки] [, Загол]

Текст – это строка сообщения, ради получения которого данная функция и применяется. Эта строка текста должна быть заключена в двойные кавычки. Текст может содержать до 1024 символов! Для того, чтобы этот текст выдавался не сплошной длинной строкой, его можно разбить на небольшие «порции», между которыми вставляются специальные «невидимые» символы – переноса и возврата к левому краю страницы.

Если не указан аргумент Кнопки, то VBA предполагает, что в диалоговом окне сообщения присутствует только кнопка OK. В [ ] показаны возможные установки для этого аргумента.

Параметр Загол задает строку, которая является заголовком окна сообщения. Если параметр отсутствует, то в качестве заголовка используется имя приложения.

В качестве примера на рис. 16 приведено окно, созданное с помощью оператора:

MsgBox "Нужно ли продолжать вычисления?", 4 + 32 + 256, "Вопрос"

Рис. 16. Пример Окна сообщения

Действие функции MsgBox таково: когда доходит очередь до её выполнения, на экране появляется Окно сообщения. Если используется бесскобочная форма синтаксиса, нажатие одной из кнопок на этом окне просто завершает работу функции. А если используется форма со скобками, то значение функции присваивается какой-нибудь переменной.

Определяемые функции

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

Синтаксис функции пользователя имеет вид:

[Область видимости] Function ИмяФункции(СписокПараметров) As ТипДанных

тело функции (операторы)

ИмяФункции = ВозвращаемоеЗначение

End Function

Как видно, определение функции очень похоже на определение процедуры. Как и у процедуры, Область видимости функции (необязательный аргумент) – это одно из ключевых слов: Public или Private. Function – ключевое слово, указывающее на то, что это функция; ИмяФункции – имя функции; СписокПараметров – список параметров (может отсутствовать); As – ключевое слово, предваряющее значение типа данных; ТипДанных – тип данных возвращаемого значения; ВозвращаемоеЗначение – значение, возвращаемое функцией; End Function – ключевые слова, указывающие на окончание блока функции.

Обращение к функции производиться из процедуры или из другой функции. Если в функции предусмотрено рекурсивное обращение, то её можно вызывать из неё самой. Если функция записана в модуле, то её можно вызвать из Excel с помощью мастера функций (Excel сохранит её в категории «Пользовательские»). При вызове из процедуры или из функции в программном операторе указывается имя функции и передаваемые ей параметры.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...