русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Процедуры


Дата добавления: 2015-07-23; просмотров: 1133; Нарушение авторских прав


Программные модули VBA состоят из процедур (одной или более).

Процедура- минимальный модуль в прикладной программы на языке VBA.

Синтаксис объявления процедуры:

Sub <имя_процедуры> (аргументы)

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

End Sub

Оператор Sub зарезервированное слово - объявление процедуры, задает имя, указывает состав аргументов, передаваемых процедуре при вызове из программы. Каждому оператору Sub должен соответствовать End Sub.

Тело процедуры - набор операторов на языке VBA. В программе макроса Excel можно вызывать процедуры данного программного модуля, а также и процедуры других модулей текущей рабочей книги и процедуры других рабочих книг. Для этого нужно задать ссылки. Для этого при нахождении на рабочем листе модуля нужно выполнить команду СЕРВИС\Ссылки. Затем в диалоговом окне "Ссылки", содержащем список доступных ссылок на библиотеки или другие рабочие книги, выбрать нужную. Для установления новых ссылок используется кнопка Пролистать и затем из диалогового окна выбрать диск, каталог и файла, содержащий процедуры, на которые нужно ссылаться из данного программного модуля. Доступна процедура или нет из программного модуля или библиотеки, определяется с помощью переключателя.

Различают 4 типа процедур:

· процедуры общего назначения (стандартные);

· командные процедуры - расширяют возможности прикладных программ, выполняя новые виды обработки данных;

· процедуры обработки событий - вызываются при наступлении определенного вида событий: открытие\закрытие электронной таблицы Excel, нажатие кнопки, перемещение объекта и т.д.;

· функции пользователя - возвращают вычисленное значение, которое можно использовать по аналогии с вызовом встроенных функций VBA.

Перед вызовом процедуры необходимо установить все необходимые ссылки.

Варианты вызова процедур:



1. Из другой процедуры того же модуля - вызов осуществляется по имени процедуры, например:

Sub Рrос_А () ' вызывающая процедура Рrос_А ()

Рrос_В ' вызов процедуры Рrос_В()

End Sub ' Завершение работы процедуры Рrос_А ()

Sub Proc_B () ' вызываемая процедура

End Sub ' Завершение работы процедуры Proc_B ()

2. Из другой процедуры другого (подключенного) модуля того же приложения - вызов осуществляется указанием квалифицируемого имени, состоящего из имени модуля и имени процедуры, например:

Sub Р_А () 'вызывающая процедура Р_А ()

[Модуль#].Р_В'вызов процедуры Р_В() модуля Модуль#

End Sub ' Завершение работы процедуры P_A ()

3. Из другого приложения, т.е. из другой рабочей книги Excel - вызов осуществляется указанием имени модуля, имени процедуры и имени рабочей книги, например:

Sub Р_А () 'вызывающая процедура Р_А ()

[Otchet.XLS].[Модуль#].P_B 'вызов Р_В() модуля 'Модуль# рабочей книги Otchet.XLS

End Sub ' Завершение работы процедуры Рrос_А ()

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

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

Private Sub Proc_B ()

End Sub

Для запрета доступа к модулю рабочей книги из процедур другой рабочей книги в начале модуля указывают: Option Private Module

Если при вызове процедуре нужно передать какие-то исходные данные, то определяют список аргументов, который содержит данные для обмена с вызывающей процедурой. В теле процедуры могут быть объявлены внутренние (локальные) переменные для служебных целей. Такие переменные не видны за пределами процедуры.

Синтаксис объявления аргументов в заголовке процедуры:

Sub P_B (V1 As Single; V2 As Date;...)

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

Текст программы Комментарий
Sub Square (L As Single; H As Single; S As Single; Optional F) - объявление процедуры Square c 4-мя аргументами
If IsMissing( F) Then F=100 - стандартная функция VBA - IsMissing проверяет есть ли аргумент; если нет, то по умолчанию F присваивается значение 100 (F имеет тип Variant)
S=L*H - вычисление площади
End Sub - конец процедуры

Вызов такой процедуры можно выполнить разными способами:

· 1-й вариант - непосредственное задание значений аргументов при вызове процедуры

Текст программы Комментарий
Sub P_A() Dim Sq as Single - вызывающая процедура
Square 12; 23; Sq - вызов процедуры с передачей значений длин сторон прямоугольника в явном виде, результат вычисления будет присвоен переменной Sq
End Sub - конец процедуры

· 2-й вариант - через имена переменных, которым присвоены значения:

Текст программы Комментарий
Sub Proc_A ( ) - вызывающая процедура
Dim Sq as Single - площадь
Dim L as Single - длина
Dim H as Single - высота
L=12 H=23 - присвоение значений переменным
Square L H Sq - Вызов процедуры с передачей значений длин сторон прямоугольника в явном виде, результат вычисления присваивается переменной Sq
End Sub - конец процедуры

· 3-й вариант - использование явного указания при вызове процедуры соответствия списка поименованных аргументов и передаваемых переменных

Текст программы Комментарий
Sub P_A ( ) - вызывающая процедура
Dim Sq as Single - площадь
Dim L as Single - длина
Dim H as Single - высота
L1=12 H1=23 - присвоение значений переменным
Square L:=L1; H:=H1; Sq - вызов процедуры с явным указанием соответствия имен аргументов и имен передаваемых переменных
End Sub - конец процедуры

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

Static <var> As <type>

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

Модификации заголовка процедуры выполняется указание ключевого слова By Val перед именами аргументов, которые нужно передать по значению, например:

Sub Square(By Val L As Single; By Val H As Single; S As Single)

S=L*H

L=10

H=20

End Sub

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

Текст программы Комментарий
Sub Proc_A ( ) Dim Sq as Single Dim LL as Single Dim HH as Single LL=12 HH=23 SquarPr L:=(LL);H:= (HH);S:= Sq End Sub - вызывающая процедура - объявление переменных - площадь - длина - высота - присвоение значений переменным - преобразование аргумента в формулу - конец процедуры


<== предыдущая лекция | следующая лекция ==>
Оператор присваивания | Встроенные функции VBA


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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