Файл: Учебник Макаровой.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.07.2024

Просмотров: 1145

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Функция

Описание

Функция

Описание

Not

Инверсия или отрицание

Хоr

Исключающее "Или"

And

Логическое "И"

Imp

Импликация

Or

Логическое "ИЛИ"

Eqv

Эквивалентность

Последовательно выполняется проверка истинности выражений. Если выражение 1 истинно, выполняется блок операторов 1, иначе выполняется проверка истинности выражения 2 и т.д.

Если ни одно из выражений не соответствует требованиям истинности, выполняется блок операторов Else, если оно имеется, иначе оператор, следующий за End If.

Пример 19.23. Организация проверки условия блочной структурой оператора If

Текст программы

Комментарий

If AvgPrice > 12000 Then

Проверка условия 1

DiffPrice=Full(234, 45600)

Если условие 1 истинно, вызов процедуры

ElseIf AvgPrice > 24000 Then

Проверка условия 2

DiffPrice=Full( 12000, 45000)

Если условие 2 истинно, вызов процедуры

ElseIf AvgPrice > 36000 Then

Проверка условия 3

DiffPrice=Full(24000, 50000)

Если условие 3 истинно, вызов процедуры

Else

Если условия 1 – 3 не выполняются, вызов

DiffPrice=Full(36000, 70000)

процедуры

End If

Конец блока If

Оператор выборки Select Case. Данный оператор применяется в том случае, если во всех логических условиях участвует одна и та же величина (переменная):

Выражение для сравнения может быть записано в виде: Case 45 или Case 3, 4, 5, или Case 5 То 12. Если ни одно из сравнений не является истинным, выполняется блок операторов Else, если блок Else

отсутствует, управление передается оператору, следующему за End Case.

Пример 19.24. Организация последовательной проверки значения переменной

Текст программы

Комментарий

590



Select CDemse

Начало работы оператора Select, объявление имени

 

переменной, для которой выполняются последующие

 

проверки – Demse

CaseDemse21

Первое сравнение

Dem=21

Если первое сравнение истинно, выполняется оператор

 

присваивания

Case Demse 22; 25; 28

Второе сравнение указан список возможных значений

 

 

Dem=31

Если второе сравнение истинно, выполняется оператор

 

присваивания

Case Demse 45 To 48

Третье сравнение, переменная Cdemse может принимать

 

значения от 45 до 48

Dem=41

Если третье сравнение истинно, выполняется оператор

 

присваивания

Case Else

Если не выполнилось ни одно из указанных сравнений

 

 

Dem=51

Выполняется присваивание

End Case

Конец оператора Select

Оператор цикла For-Next. Данный оператор относится к категории вычисляемых циклов, когда известно заранее число повторений цикла, заданы начальное, конечное значения и шаг (приращение) изменения начального значения, т.е.:

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

Если переменная цикла превысила значение конец, управление передается оператору, следующему за

фразой Next.

В теле цикла может присутствовать оператор Exit For. При выполнении этого оператора прекращается цикл и управление также передается оператору, следующему за фразой Next. Цикл ForNext может быть вложенным.

Пример 19.25. Организация циклов с использованием счетчика повторений

Текст программы

Комментарий

591


Sub stickRandom()

Объявление имени процедуры

Dim numrows As Integer; numcols As Integer

Объявление переменных

Dim therow As Integer; thecol As Integer

 

numrows = Selection.Rows.Count

Определение числа строк в выделенном блоке ячеек

numcols = Selection.Columns.Count

Определение числа столбцов в выделенном блоке

 

ячеек

Debug. Print numrows; numcols

Печать числа строк и столбцов в выделенном блоке

 

ячеек

Randomize

Генератор случайных чисел

Debug.Print Rnd For therow = 1 To numrows

Печать случайного числа

For thecol = 1 To numcols

Внешний цикл по числу строк в блоке ячеек

Selection. Cells(therow; thecol).Value = Rnd

Внутренний цикл по числу столбцов в блоке ячеек

 

Присваивание текущей ячейке случайного числа

 

Selection – выбор ячейки

 

Cells – метод доступа к ячейке с определенными

 

координатами

 

Value – свойство "значение"

Next thecol

Конец внутренного цикла

Next therow

Конец внешнего цикла

End Sub

Конец процедуры

Цикл Do-Loop. Логически управляемый цикл, оператор Do начало, оператор Loop конец цикла; имеет 4 модификации:

1) условие True в начале цикла

Do While <условие> <блок операторов> Exit Do

<блок операторов> Loop

Цикл выполняется до тех пор, пока истинно <условие>. Минимальное число повторений тела цикла – 0. Оператор Exit Do предназначен для прекращения цикла и передачи управления оператору Loop конец цикла.

2) условие True в конце цикла

Do

<блок операторов> Exit Do

<блок операторов> Loop While <условие>

Цикл выполняется хотя бы один раз, в конце выполняется проверка <условия>. 3) условие False в начале цикла

Do Until <условие> <блок операторов> Exit Do

<блок операторов> Loop

Until указывает, что цикл выполняется до тех пор, пока <условие> не станет истинным. Минимальное число повторений тела цикла – 0.

4) условие False в конце цикла

Do

<блок операторов> Exit Do

592


<блок операторов> Loop Until <условие>

Условие проверяется в конце, цикл прекращается, когда условие станет истинным. Минимальное число повторений тела цикла – 1.

Пример 19.26. Выполнение логически прерываемых циклов

Текст программы

Комментарий

Option Explicit

Обязательность объявления всех переменных перед их

 

использованием

Sub Do_Rnd()

Объявление имени процедуры без параметров

Dim a As Single

Объявление переменных

Dim i As Integer,

 

Randomize

Вызов генератора случайных чисел

Do While True

Начало цикла Do. Задание условия выполнения цикла

 

цикл бесконечный

a=Rnd

Присвоение переменной случайного числа

Debug.Print a

Печать случайного числа

If a > 0.99 Then Exit Do

Блок условия при его выполнении выход из цикла

Loop

Конец цикла

End Sub

Конец процедуры

 

 

Цикл While-Wend. Данный оператор полностью соответствует структуре Do While-Loop. Отличительной особенностью оператора является невозможность прервать выполнение цикла из тела цикла (Exit Do отсутствует), проверка условия выполняется только в начале цикла.

While <условие> <блок операторов> Wend

Цикл For Each. Оператор относится к категории операторов объектного типа, т.е. применяется к массивам (элементам) и наборам объектов. Выполняется фиксированное число раз, число объектов в наборе определяется автоматически. Упорядочение элементов набора произвольное.

For Each <элемент> In <набор> <блок операторов>

Exit For

<блок операторов>

где <элемент> представляет собой переменную типа Variant, <набор> – определенный набор объектов.

Для прерывания цикла используется оператор Exit For.

РАБОТА С ФАЙЛАМИ

Основные понятия

VBA работает с хранимыми на диске файлами двух типов: последовательного и произвольного доступа.

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

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

593