- Событийные процедуры способы их создания
- События и событийные процедуры
- Событийные процедуры способы их создания
- Процедуры, подпрограммы и функции
- Автопроцедуры
- Событийные процедуры
- Встроенные функции
- Классы функций
- Использование табличных функций
- Строковые функции
- Математические функции
- Функции даты и времени
Событийные процедуры способы их создания
4.5.2. Событийные процедуры
В рамках пакета Visual Basic программные модули, которые обрабатывают внешние воздействия, называются событийными процедурами (Event Procedure). Под внешним воздействием понимаются события, которые должны произойти в результате нажатия клавиши, щелчка мыши и т. д. С каждым элементом (объектом), присутствующим на форме, связывается набор возможных событий. Для каждого объекта имеется большой набор возможных событий, которые автоматически связывают объект с действиями пользователя.
В качестве примера на рис. 4.12 продемонстрирован фрагмент окна редактора программ с заготовкой событийной процедуры для объекта типа Label с именем Lab, происходящей в результате щелчка (нажатие левой кнопки) мыши ( Click ) по указанному объекту. Список других возможных событийных процедур выделен в виде отдельного окна.
После того как будет выбрано подходящее событие, автоматически сформируются начало и конец процедуры (Subroutine), которая в общем виде имеет синтаксис, представленный на рис. 4.13.
Доступ к событийным процедурам и ввод программных кодов разрабатываемого приложения осуществляются следующим образом:
Рис. 4.13. Общий вид формы процедуры
Рис. 4.14. Внешний вид окна редактора программ
Вначале следует войти в окно редактора программ, для чего, находясь в форме проектов, надо дважды щелкнуть левой кнопкой мыши либо на свободном месте самой формы, либо «по объекту» (в этом случае сразу откроется первая, предлагаемая системой, заготовка событийной процедуры). Язык программирования Visual Basic поддерживает многооконный режим работы, поэтому на форме разрабатываемого проекта появится окно редактора программ, ничем не отличающееся от обычного приложения Windows. На рисунке 4.14 представлен внешний вид окна редактора программ.
Специфическими чертами окна редактора программ являются:
— встроенный контроль правильности написания операторов Visual Basic;
— наличие строки с разворачивающимися списками: первый — список объектов (Object), в котором автоматически запоминаются имена всех объектов, созданных на проекте формы, и второй — список событийных процедур (Procedure), относящихся к конкретно выбранному объекту. Поэтому, прежде чем выбрать событийную процедуру, необходимо назначить объект из правого списка;
— любую строку или несколько строк можно стандартным способом переносить через буфер обмена (Clipboard).
Открыть окно редактора программ можно с помощью директивы View Code окна Project (см. рис. 4.4).
Источник
События и событийные процедуры
Событие – это что-то, что может произойти с диалоговым окном или элементом управления диалогового окна. Типичные примеры событий: щелчок на кнопке, переключателе и т.д. Другие примеры событий: изменение содержимого окна редактирования или выбор элемента списка. Щелчок мышью, нажатие клавиши и действия, внутренние для вашего компьютера, – все они запускают или иными словами влекут за собой события.
Использование событий позволяет создавать действительно диалоговые приложения. В таких приложениях все действия пользователя приводят к определенной реакции приложения, если эти действия предусмотрены и не заблокированы. Если надо, чтобы пользователи чувствовали себя комфортно при работе с программами, начинать создавать диалоговые окна надо с разработки событийных процедур.
Такие объекты, как формы и элементы управления приводят в действие некоторые события. Можно написать собственные VBA-процедуры, реагирующие на события. Такие процедуры, называются событийными процедурами или процедурами обработки событий.
Событийные процедуры следует записывать в модуль класса, который является частью UserForm. При этом такие процедуры должны иметь имена в виде ObjectName_EventName, где ObjectName – имя формы или элемента управления, a EventName – имя события, с которым следует работать. Такой формат имени, позволяет VBA сопоставлять заданному событию требуемую процедуру.
Большая часть программы, которую вы записывается в модуль класса формы, будет связана с обработкой событий. В табл. 9.9 перечислены события, для которых можно написать процедуры обработки.
Таблица 9.9. События объектов UserForm
Событие | Синтаксис заголовка процедуры обработки события | Описание |
Activate | Private Sub objecf_Activate() | Инициируется всякий раз, когда окно формы становится активным. Это событие используется для обновления содержимого диалоговых элементов управления, чтобы отразить любые изменения, которые произошли, пока окно формы было неактивным |
Click | Private Sub object_Click(index As Long) | Инициируется всякий раз, когда по форме (любой ее части, не занятой элементами управления) щелкают мышью |
DblClic | Private Sub object_DblClick(index As Long, ByVal Cancel As MSForms.ReturnBoolean) | Инициируется всякий раз, когда по форме (любой ее части, не занятой элементами управления) дважды щелкают мышью |
Deactivate | Private Sub object_Deactivate() | Инициируется всякий раз, когда форма перестает быть активной |
Initialize | Private Sub object_Initialize() | Инициируется всякий раз, когда форма впервые загружается в память посредством выполнения оператора Load или с помощью метода Show. Это событие используется для инициализации элементов управления формы при ее появлении на экране. |
Resize | Private Sub UserForm_ Resize() | Инициируется при изменении размеров формы |
Terminate | Private Sub object_Terminate() | Инициируется всякий раз, когда форма выгружается из памяти. Событие используется для осуществления любых специальных служебных задач, которые необходимо выполнить прежде, чем переменные формы будут выгружены |
Дата добавления: 2015-08-14 ; просмотров: 825 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
Источник
Событийные процедуры способы их создания
3. Графический интерфейс проекта и событийные процедуры.
Графический интерфейс проекта. Графический интерфейс необходим для реализации интерактивного диалога пользователя с запущенным на выполнение готовым проектом. Основой для создания графического интерфейса разрабатываемого проекта является объект «форма». Форма представляет собой окно, на котором размещаются другие объекты — элементы управления.
Элементы управления имеют различное назначение. Текстовые поля ( TextBox ) используются для ввода и вывода данных, надписи ( Label ) — для вывода данных и пояснительных текстов, графические окна ( PictureBox ) — для вывода графики, кнопки ( Button ) — для запуска событийных процедур (рис. 2.6).
Рис. 2.6. Элементы
управления на форме
Графический интерфейс проекта представляет собой форму, на которой размещены управляющие элементы.
Визуальное конструирование графического интерфейса проекта состоит в том, что на форме с помощью мыши «рисуются» те или иные элементы управления. Выбрав щелчком мышью нужный элемент на Панели объектов, мы можем поместить его на форму разрабатываемого проекта. Процесс размещения на форме элементов управления аналогичен рисованию графических примитивов с использованием графического редактора.
Событийные процедуры. Событие ( Event ) представляет собой действие, распознаваемое элементом управления. Событие может создаваться пользователем (например, щелчок мышью или нажатие клавиши) или быть результатом воздействия других программных объектов.
Каждый объект реагирует на определенный набор событий. Например, кнопка реагирует на щелчок ( Click ), нажатие ( MouseDown ) и отпускание ( MouseUp ) мыши или нажатие определенной клавиши на клавиатуре ( KeyPress ).
Для каждого события можно запрограммировать отклик, т. е. реакцию объекта на произошедшее событие. Если пользователь производит какое-либо воздействие на элемент графического интерфейса (например, щелчок), в качестве отклика выполняется событийная процедура, представляющая собой программу.
Для того чтобы создать заготовку событийной процедуры, необходимо в режиме разработки проекта осуществить двойной щелчок мышью по объекту. Например, после щелчка по кнопке Button 1 в окне Программный код будет создана заготовка событийной процедуры:
Private Sub Button1_Click (. )
Служебные слова Private Sub и End Sub обозначают начало и конец событийной процедуры. Имя событийной процедуры Button 1_ Click (. ) включает в себя имя объекта и имя события.
Далее необходимо ввести в событийную процедуру программный код, который реализует определенный алгоритм.
Событийная процедура представляет собой программу, которая начинает выполняться после реализации определенного события.
Проект «Первый проект» . Создать проект, в котором в первой событийной процедуре свойству Text всех объектов будут присвоены новые значения, а во второй событийной процедуре будут изменены размеры формы с помощью метода Scale () , очищено текстовое поле с помощью метода Clear () и скрыто графическое поле с помощью метода Hide () .
Создадим графический интерфейс проекта (рис. 2.7).
1. Поместить на форму две кнопки Button 1 и Button 2 , текстовое поле TextBox 1 , надпись Label 1 и графическое поле PictureBox 1 .
2. Последовательно выделить объекты PictureBox 1 и Label 1 и с помощью диалогового окна Свойства установить для свойства BackColor (цвет фона) значение White (белый).
Создадим событийные процедуры. Последовательно осуществим двойной щелчок по обеим кнопкам и внесем в заготовки событийных процедур программные коды.
3. Private Sub Button1_Click (. )
Me .Text = » Первый проект «
TextBox1.Text = » Текстовое поле «
Private Sub Button2_Click (. )
4. После запуска проекта на выполнение и щелчков по кнопкам событийные процедуры будут выполнены (см. рис. 2.7).
Рис. 2.7. Результаты выполнения событийных процедур.
Источник
Процедуры, подпрограммы и функции
Автопроцедуры
Если процедурам присвоить специальные имена, то они запускаются автоматически.
- Процедура с именем Auto_Open автоматически запускается при открытии рабочей книги или приложения MS Excel.
- Процедура с именем Auto_Close автоматически запускается при закрытии рабочей книги или приложения MS Excel.
Обычно в этих процедурах создаются панели инструментов, разрешается или отменяется их высвечивание, производятся настройки экрана или изменяются меню .
- Если процедуры с указанными именами записываются в Личную книгу макросов (Personal Macro Workbook), то они автоматически выполняются при открытии или закрытии приложения.
- Нажатие клавиши Shift при открытии или при закрытии рабочей книги предотвращает выполнение автоматической процедуры.
Событийные процедуры
С каждым объектом приложения или формы связан определенный набор событий. Процедуры обработки событий позволяют выполнить некоторые действия при наступлении того или иного события, связанного с объектом приложения.
Событийные процедуры записываются на процедурных листах — листах-обработчиках событий. Двойной щелчок на объект в окне проекта ( рабочая книга , рабочий или диаграммный лист , форма) открывает процедурный лист , связанный с выбранным объектом приложения.
Событийные процедуры имеют составные имена: название или тип объекта и название события, разделенные нижним подчеркиванием ( _ ). Например, процедура с именем Workbook_Open выполняется при открытии рабочей книги , для которой эта процедура написана. Имена присваиваются событийным процедурам автоматически.
На рис. 7.12 в окне проекта выбрана рабочая книга ( объект Эта книга ). В списке объектов на процедурном листе рабочей книги выбран объект Workbook . Как следствие в списке процедур раскрыт список событий объекта Workbook .
Для события Open , выбранного из списка событий, в окне программы появились операторы начала и конца соответствующей событийной процедуры. Имя процедуры установлено автоматически. Теперь можно записать операторы , которые должны выполняться при наступлении события — открытия рабочей книги .
При открытии рабочей книги iserror название рабочей книги и активного рабочего листа помещаются в ячейки таблицы A1 и A2 соответственно.
Встроенные функции
Классы функций
Язык Visual Basic имеет большое число встроенных функций. Это математические функции , функции для строковых переменных, функции даты и времени, функции преобразования данных , финансовые и информационные функции.
Классы функций можно увидеть в Object Browser, выбрав библиотеку VBA.
Дополнительно можно задать название класса функций на английском языке и выполнить поиск.
Использование табличных функций
Наряду с функциями VBA в процедурах можно использовать встроенные функции рабочего листа (табличные функции). Названия функций VBA и функций рабочего листа часто совпадают, но параметры функций могут различаться. Часть встроенных табличных функций не имеет аналогов в VBA, например, функции Max или Min .
При необходимости использования табличной функции нужно сделать уточнение при помощи ссылки на объект Application или объект WorksheetFunction ( рис. 7.15).
- Независимо от русскоязычной или англоязычной версий MS Office названия функций VBА и функций рабочего листа в процедурах записываются на английском языке.
Рассчитать максимум из 4-х чисел и их среднее арифметическое.
Процедура использует две функции рабочего листа : Max и Average . Ниже в примере приведены оба способа ссылок на функции рабочего листа .
Строковые функции
Visual Basic располагает большим набором встроенных функций для обработки алфавитно-цифровых (символьных) данных. Многие из них совпадают с табличными. Но есть табличные строковые функции , отсутствующие в языке VBA, и наоборот.
Название и синтаксис функции | Описание | Примеры |
---|---|---|
Asc (string) | Возвращает ASCII- код символа | Asc («*») возвращает 42 |
Chr (charcode) | Возвращает символ по ASCII-коду | Chr (42) возвращает * |
Format(еxpression [,format][,firstdayofweek][,firstweekofyear]) | Преобразует аргумент в соответствии с заданным форматом | Format(42.399, «#.00») возвращает 42,40 Format(«HELLO, MY FREND», » возвращает hello, my frend |
Hex (number) | Возвращает шестнадцатиричное представление числа | Hex (18) возвращает 12 Hex (31) возвращает 1F |
InStr([start,] string1, string2[, compare ]) | Ищет подстроку в прямом направлении | InStr(1, «To be or not to be», «be») возвращает 4 |
InstrRev(stringcheck, stringmatch[, start][, compare ]) | Ищет подстроку в обратном направлении | InstrRev(«To be or not to be», «be») возвращает 17 |
LCase(string) | Преобразует строку в нижний регистр | LCase(«World») возвращает world |
Left( string, length ) | Выделяет левую часть строки | Left(«World», 2) возвращает Wo |
Len (string) | Определяет длину строки | Len («World») возвращает 5 |
LTrim(string) | Удаляет ведущие пробелы Пробелы справа сохраняются | LTrim(» extra spaces «) возвращает extra spaces без левых пробелов |
Mid (string, start[, length]) | Выделяет подстроку | Mid («World», 2,3) возвращает orl |
Oct(number) | Возвращает восьмеричное представление числа | Oct(12) возвращает 14 |
Replace (expression, find, replace [,start][,count][, compare ]) | Заменяет подстроку на новую подстроку | Replace («The car is red», «red», «blue») возвращает The car is blue |
Right( string, length ) | Выделяет правую часть строки | Right(«World»,2) возвращает ld |
RTrim(string) | Удаляет завершающие пробелы Пробелы слева сохраняются | RTrim(» extra spaces «) возвращает extra spaces без правых пробелов |
Space(number) | Создает строку пробелов | Space(6) создает строку из 6 пробелов |
Str(number) | Преобразует число в строку | Str(123) возвращает строку 123 |
StrComp(string1, string2[, compare ]) | Сравнивает две строки:
| StrComp(«WORld», «world», 1) возвращает 0 (равенство строк будет обнаружено при текстуальном сравнении) |
String(number, character) | Создает строку символов | String (5,»*») и String (5,42) возвращают ***** . 42 — ASCII- код символа * |
Trim (string) | Удаляет пробелы с двух сторон строки | Trim (» extra spaces «) возвращает extra spaces без левых и правых пробелов |
UCase(string) | Преобразует строку в верхний регистр | UCase(«World») возвращает WORLD |
Val (string) | Преобразует строку в число | Val («6.28») возвращает число 6.28 |
Функция | Тип результата | Функция | Тип результата |
---|---|---|---|
CBооl | Воо1еап | CCиr | Сиrrепсу |
CDate | Date | CDbl | Doublе |
CInt | Iпtegеr | CLng | Long |
CSng | Single | CStr | String |
CVаr | Variant |
В качестве параметра функциям преобразования строк передается выражение ( expression ), которое и преобразуется в выбранный тип.
Математические функции
Каждая математическая функция имеет один параметр — число ( number ). При использовании действительных чисел как констант разделителем целой и дробной части является точка. В разделе Derived Math Functions справочника по VBA можно найти формулы расчета математических функций, не являющихся встроенными функциями.
Функция | Описание |
---|---|
Abs | Возвращает абсолютную величину числа |
Atn | Возвращает арктангенс числа |
Cоs | Возвращает косинус угла* |
Eхр | Возвращает степень числа e (еx) |
Fiх | Возвращает целую часть числа |
Int | Округляет число до меньшего целого числа |
Log | Возвращает натуральный логарифм числа (основание е = 2.71828. ) |
Randomize | Инициирует генератор случайных чисел |
Rnd | Возвращает случайное число |
Round | Округляет число до целого, если не задан аргумент numdecimalplaces (десятичный разряд, до которого производится округление) |
Sin | Возвращает синус угла* |
Sgn | Возвращает знак числа |
Sqr | Возвращает квадратный корень из числа |
Тап | Возвращает тангенс угла* |
* Углы задаются в радианах. Для перевода градусов в радианы умножьте градусы на /180. |
Функции даты и времени
Под датой подразумевается переменная типа Date или дата-константа, которая задана согласно системному краткому формату даты с разделителями даты, определенными системной настройкой, и заключена в кавычки c использованием символа «решетка» ( # ).
- Переменная типа Date в памяти компьютера сохраняется как число типа Double . Целая часть числа — это дата, а дробная часть — время.
- Полезная информация при работе с переменными типа Date : одни сутки — это 24 часа, или 1440 минут, или 86400 секунд.
Название и синтаксис функций | Описание | Пример |
---|---|---|
Date() * | Возвращает или устанавливает системную дату | Date_Today=Date() запоминает системную дату Date = #7/26/2007# устанавливает новую системную дату Источник |