Основные сведения о процедурах
Процедура — это сгруппированный и логически законченный набор операторов VВА. Различают следующие типы процедур: процедуры-подпрограммы (процедуры Sub) и процедуры-функции (процедуры Function). Процедура Sub— совокупность операторов VВА, заключенных между операторами Sub и Еnd Sub. Процедуры этого типа выполняют определенные действия, но значения в вызывающую их процедуру не возвращают. Имена таких процедур не могут быть использованы в выражениях и операторах присваивания. Как правило, процедуры - подпрограммы являются макросами или процедурами обработки событий (процедуры, автоматически выполняемые при возникновении события, инициируемого пользователем или приложением). Синтаксис процедуры Sub имеет вид: операторы VВА End Sub Параметр имя определяет имя создаваемой процедуры. Параметры аргументы применяются при необходимости передачи в процедуру требуемых значений. Процедура Function предназначена для получения вычисляемого значения посредством преобразования исходных данных. Как правило, функциями являются процедуры преобразования, которые используются в выражениях операторах присваивания и др. В отличие от подпрограмм, процедуры-функции выполняют определенную операцию и обязательно возвращают в вызывающую их процедуру вычисляемое значение. Синтаксис процедуры-функции имеет вид: Function имя ( [аргументы] ) [Аs тип] Операторы VВА имя = выражение Еnd Function Параметр имя определяет имя создаваемой процедуры. Необязательные параметры аргументы позволяют передать в процедуру требуемые значения. Параметр Аs тип задает тип данных, возвращаемых функцией. Инструкция имя = выражение используется для задания вычисленного и возвращаемого в вызывающую процедуру значения. Процедуры Function и Sab могут быть либо закрытыми, либо открытыми. Открытую процедуру, объявленную с применением ключевого слова Public, разрешается вызывать из любой процедуры любого модуля. Закрытую процедуру, объявленную с помощью ключевого слова Private, можно вызывать только из процедур текущего модуля. Если в объявлении процедуры не указан ее вид, то по умолчанию она считается Public (то есть открытый). Пример 5. Операторы процедуры ПервыйСимвол. Назначение процедуры — преобразование первого символа исходной строки strИсходнаяСтрока в прописной, а остальных символов строки в строчные. 1. Publiс Function ПервыйСимвол (strИсходнаяСтрока Аs String) 2. Dim strСтрока As String 3. strСтрока = Trim (strИсходнаяСтрока) ПервыйGимвол = Ucase (Left(strСтрока), 1)) & Lcase (Mid (strСтрока, 2)) 4. End Function Здесь и далее нумерация 1,2,…, 5 дана с целью последующих комментариев операторов процедуры: 1. Задание открытой (Рublic) процедуры с именем ПервыйСимвол, возвращающей преобразованное значение (тип Function). Входным аргументом является строка strИсходнаяСтрoка, в которой требуется установить первую букву как прописную, а остальные — строчные. 2. Описание введенной вспомогательной переменной — строки strСтрока. Эту строку планируется использовать для временного хранения информации. 3. Определение содержимого переменной strСтрока как значение строки strИсходнаяСтрока, в начале и конце которой удалены пробелы с помощью встроенной в Ехсеl функции Trim(). 4. Установка первого (левого) символа содержимого строки strСтрока как прописного (применяется встроенная функция UСаsе) и перевод остальных символов строки в строчные (встроенная функция LСаsе). Оператор & (логическое «и») используется для слияния (объединения) двух подстрок в одну. Результат записывается в строку ПервыйСимвол, то есть в имя функции — для передачи в вызывающую программу. 5. Окончание процедуры. Пример 6. Создать процедуру обработки события Нажатие (Click) для помещенной в поле рабочего листа кнопки Преобразовать. Преобразование заключается в вызове для содержимого предварительно выделенного диапазона ячеек рабочего листа Ехсеl процедуры ПервыйСимвол (пример 5), подсчете числа сделанных с помощью этой процедуры преобразований и выделении курсивом не измененных процедурой значений. В рассматриваемом примере используются понятия объекта Selection,- свойств Value и Font.Italic,Cell и события Click. 1. Private Sub Преобразовать_Click ( ) 2. Dim intЧислоЗамен As Integer intЧислоЗамен = 0 3. For Each Cell In Selection If Cell.Value <> Первый символ (Cell.Value) Then Cell.Value = Первый символ (Cell.Value) intЧислоЗамен = intЧислоЗамен +1 Else Cell.Fon.Italic = True End If Next Cell 7.MsgBox «Сделано» & intЧислоЗамен & «преобразований» End Sub Комментарии: 1. Задание процедуры, обрабатывающей событие Нажатие(Click), возникающее при нажатии кнопки с именем Преобразовать. Процедура не возвращает никакого значения (Sub), доступна только в данном модуле (Private) и не имеет входных аргументов. 2. Описание введенной переменной — intЧислоЗамен. Содержимое этой переменной— число преобразованных функцией ПервыйСимвол ячеек. Изначально содержимое переменной intЧислоЗамен равно 0. 3. Организуется последовательный перебор всех ячеек предварительно выделенного диапазона, рабочего листа таблицы Ехсеl, определяемого объектом Selection. 4. Осуществляется проверка неравенства исходного значения текущей ячейки диапазона и значения этой же ячейки, преобразованного функцией ПервыйСимвол. В случае неравенства выполняется группа операторов 5, а в случае равенства — 6. 5. Строка преобразуется путем вызова для содержимого текущей ячейки рабочего листа таблицы Ехсеl процедуры ПервыйСимвол; содержимое переменной intЧислоЗамен (счетчика выполненных преобразований) увеличивается на 1. 6. Содержимое текущей ячейки выделяется курсивом. 7. Вывод сообщения о числе преобразованных ячеек. Данные, необходимые процедуре типа Sub или Function для выполнения ее задачи (в примере 5. переменная strИсходнаяСтрока), передаются как аргументы. Аргументы отделяются друг от друга запятыми. Объявляя аргумент с помощью ключевого слова Аs, можно задать тип исходных данных. Процедуре можно запретить изменение значения переданного ей аргумента, для чего используется ключевое слово ByVal. Если же процедуре разрешено изменять значение аргумента, то может применяться ключевое слово ВуRef. По умолчанию применяется именно этот способ передачи аргумента. Для определения обязательности аргумента используется ключевое слово Optional. Пример 7. Объявление процедуры Sub, содержащей два входных аргумента: Sub Обновление (ВуVа1 IngНомер Аs Long, strИмяКлиента Аs String) Первый аргумент, IngНомер, передается по значению как тип Long. Процедура получает копию переменной, переданной вызывающей процедурой. При изменении значения переменной изменится только копия, а сама переменная в вызывающей процедуре сохранит прежнее содержание. Второй аргумент, strИмяКлиента, передается по ссылке как тип String. В этом случае процедура имеет доступ к исходной переменной в памяти и поэтому способна изменить ее значение. [2]
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему стероиды повышают давление?: Основных причин три... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (160)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |