Смекни!
smekni.com

Компьютерные информационные технологии 2 (стр. 2 из 4)

группа_2]

End If

Здесь параметр условие - логическое выражение, принима­ющее значение «истинно» или «ложно». Если это выражение истинно, то выполняется совокупность операторов, отмеченная как группа_1. Если выражение ложно, то выполняются опера­торы, отмеченные как группа_2.

Пример 2. Дополнить пример 1 проверкой корректнос­ти введенного номера месяца. Для этого заменим последний оператор примера 1 (оператор МsgВох) следующей конструк­цией:

IfintНомер <= 12 And intНомер > 0 Then

МsgВох « Выбран месяц: » » & strМесяцы ( intНомер-1)

Else

МsgВох « Указан не верный номер месяца: » & intНомер

End If

Вторая конструкция применяется для выполнения одной или нескольких групп инструкций в зависимости от значения ус­ловия.

Sе1ес1 Саsе выражение

Саsе значения_1

группа_1

[ Саsе значения_2

группа_2 ]

…………………….

[ Саsе Е1sе

группа_Е1sе ]

Еnd Sе1ес1

Здесь выражение — вычисляемое арифметическое или логи­ческое выражение, в простейшем случае— переменная. Значе­ния — одно или несколько значений вычисляемого выражения, а соответствующая ему группа — совокупность операторов, вы­полняемых в случае, если результат вычисления совпадает с этим значением.

Пример 3. Дополнить примеры 1 и 2 конструкцией, вычисляющей время года на основе введенного номера месяца.

Sе1есt Саsе intНомер

Саsе 3 То 5

strВремяГода = "весны"

Саsе 6 То 8

strВремяГода = "лета"

Саsе 9 То 11

strВремяГода = "осени"

Саsе Е1sе

strВремяГода = "зимы"

Еnd Sе1ес1:

МsgВох strМесяцы(IndНомер-1) & " - месяц " &strВремяГода

Эту конструкцию следует поместить вместо оператора МsgВох "Выбран месяц:" & strМесяцы(intНомер-1) (см. пример 2).

Конструкции для организации циклических процессов исполь­зуются для многократного повторения одной или более опера­ций.

Язык VВА включает несколько управляющих структур для выполнения циклов. Простейший синтаксис этих конструкций имеет вид:

Do While условие

Операторы

Lоор

Fог счетчик = начало То конец [Stер шаг] -

операторы

Next [счетчик]

Fог Еасh элемент In группа

операторы

Nехt: [элемент]

Для конструкции Dо ... Lоор параметр условие — логическое выражение, принимающее значение «истинно» или «ложно». До тех пор, пока это выражение истинно, выполняются операто­ры, расположенные до Lоор, в противном случае эти операторы пропускаются.

В конструкции Fог … Nехt параметр счетчик—имя вспомо­гательной переменной, которая изменяется с исходного значе­ния начало до значения конец с шагом изменения шаг. При каждом изменении этой переменной выполняются инструкции, находящиеся между Fог и Nехt.

Конструкция Fог Еасh ... Nехt не требует подсчитывать число элементов или задавать условие окончания цикла. Здесь эле­мент — это переменная, представляющая элемент семейства, а группа — имя семейства или массива. Операторы выполняют­ся для всех элементов этой группы.

Пример 4. Иллюстрация использования конструкций Dо ... Lоор и Foг ... Nехt для нахождения суммы чисел от 1 до 50 включительно и конструкции Fог Еасh ... Nехt для суммирова­ния чисел, находящихся в массиве с именем «Налоги» (актив­ного рабочего листа таблицы Ехсеl). В этом примере использует­ся свойство Vа1uе объекта Сеll.

intЧисло = 1

intСумма = 0

Do While intЧисло<= 50

intСумма = intСумма + intЧисло

intЧисло = intЧисло + 1

Loop

intСумма = 0

For intЧисло = 1 To 50 step 1

IntСумма = intСумма + intЧисло

Next intЧисло

IntСумма = 0

For Each Cell In Range («Налоги»)

IntСумма = intCумма +Сell. Value

Next Cell

1.4. Основные сведения о процедурах

Процедура — это сгруппированный и логически закончен­ный набор операторов VВА. Различают следующие типы проце­дур: процедуры-подпрограммы (процедуры Sub) и процедуры-функции (процедуры Function).

Процедура Sub— совокупность операторов VВА, заключен­ных между операторами Sub и Еnd Sub. Процедуры этого типа выполняют определенные действия, но значения в вызывающую их процедуру не возвращают. Имена таких процедур не могут быть использованы в выражениях и операторах присваивания. Как правило, процедуры - подпрограммы являются макросами или процедурами обработки событий (процедуры, автоматически выполняемые при возникновении события, инициируемого пользователем или приложением).

Синтаксис процедуры 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.