
Косарев_Экомическая информатика
.pdfПрограммирование |
411 |
[Операнд1]=> [Операнд2] |
Больше или равно. Результат -True, |
|
если первый операнд больше или |
[Операнд 1]<= [Операнд2] |
равен второму |
Меньше или равно. Результат -True, |
|
|
если первый операнд меньше или |
|
равен второму |
[Строка] Like [Маска} |
Соответствие маске. Результат -True, |
|
если строка соответствует маске |
[Операнд!] Is [Операнд2] |
Ссылка на объект. Результат -True, |
|
если обе переменные ссылаются на |
|
один и тот же объект |
Операции отношения применяются для записи выражений ус ловия, результатом выполнения которых являются значения True (Истина) или False (Ложно). Ниже представлены примеры исполь зования операций отношения.
Выражение условия |
|
Результат |
|
|
25 <> 30 |
True (Истина) ( 25 не равно 30) |
|
||
25<30 |
True (Истина) (25 меньше 30) |
|
||
25>30 |
False (Ложно) ( 25 не больше 30) |
|
||
Text1.Text = «Петров» |
True (Истина), если слово «Петров» |
|||
|
является |
содержимым |
первого тек |
|
|
стового поля, в противном случае |
- |
||
|
False (ложно) |
|
|
|
Number >= 100 |
True (Истина), если |
переменная |
||
|
Number |
содержит значение не |
||
|
меньше |
100, в противном случае |
- |
|
|
False (ложно) |
|
|
Логические операции
Логические операции применяются в логических выраже ниях. Если существует несколько условий выбора в операциях отношения, то эти операции связываются между собой логи ческими операциями. Перечень логических операций VBA при веден ниже.
412
Логическая операция
[Операнд1] And [Операнд2]
[Операнд1] От [Операнд2]
Not [Операнд]
[Операнд!] Хог [Операнд2]
Глава 8
Действие
Если связываемые условия имеют значение True, то результирующее значение также будет True
Если одно из связываемых условий будет иметь значение True, то ре зультирующим . значением также будет True
Если условие имеет значение True, то результирующим значением бу дет False. Если условие имеет значе ние False, то результирующее значе ние будет True
Если только одно из связываемых условий имеет значение True, то ре зультирующее значение также будет True. Если оба условия имеют оди наковые значения, то результирую щее значение будет False
Ниже приведены примеры применения логических операций.
Логическое выражение |
Результат |
Textl .Text = «Иванов» And Number < 20
Textl .Text = «Иванов» Хог Number < 20
Textl .Text = «Иванов» Or Number < 20
Not Number < 20
True (истина), если оба выражения сравнения имеют значение True (Ис тина)
False (ложно), если оба выражения сравнения имеют значение True (Ис тина)
True (истина), если хотя бы одно выражение сравнения имеет значе ние True (Истина). False (Ложно), если оба выражения имеют значение False (ложно).
True (истина), если выражение срав нения имеет значение False
Операции для работы со строками
В среде VBA есть только одна операция для работы со строка ми - операция конкатенации. Она позволяет объединить значения двух или нескольких строковых переменных или строковых кон-
Программирование |
413 |
стант. Знак операции конкатенации - символ амперсанд (&). При конкатенации строк значение второй строки добавляется в конец первой строки. Результатом операции является более длинная строка, составленная из исходных строк.
Выражение с применением операции конкатенации имеет сле дующий вид:
strBbipa>KeHHe_l & 81гВыражение_2 [. .. & strBbipa»ceHHe_N]
где strBbipaxceHHe - строковые выражения, которые могут быть любыми допустимыми строками (строковыми переменными, строковыми константами или функциями обработки строк). Знак амперсанда между строковыми выражени ями указывает, что производится конкатенация этих вы ражений. Он отделяется от выражения пробельным сим волом. В одном операторе можно объединять любое ко личество строковых выражений.
П р и м е р :
strResult = «Студент» & «Иванов»
Здесь объединяются две неименованные строковые констан ты. Результатом операции конкатенации будет значение «Студент Иванов».
Тот же результат будет получен при использовании следую щего кода фрагмента программы:
Dim strName As String Dim strResult As String strName = «Иванов»
strResult = «Студент» & strName
В этом примере в операции конкатенации участвуют неиме нованная строковая константа й строковая переменная.
8.4.3. ОПЕРАТОРЫ УПРАВЛЕНИЯ
Операторы управления служат для управления работой про граммы. К ним относятся: операторы перехода, операторы выбо ра и операторы циклов.
414 |
Глава 8 |
Операторы перехода
Операторы перехода применяются в программе для реализа ции безусловных алгоритмических конструкций. Они выполняют переход с одного участка программы на любой другой без како го-либо условия. Оператор перехода имеет следующий вид:
|
GoTo идентификатор |
где GoTo |
- ключевое слово; |
идентификатор - одна из меток программы.
Метка - это идентификатор, помещаемый слева от програм много оператора и отделенный от него двоеточием, например:
ml: Text1.Text = «это метка»
Оператор перехода для перехода к оператору с меткой ml бу дет иметь вид:
GoTo ml
Операторы выбора
Операторы выбора используются в программе для реализа ции условных алгоритмических конструкций, которые вызывают выполнение различных частей программы в соответствии с усло виями, существующими на момент выполнения этих операторов. Одним из важных элементов программного оператора выбора является выражение условия, значением которого может быть Истина (True) или Ложь (False). Такие выражения условия запи сываются с помощью операций отношения.
В системе VBA есть два основных типа операторов выбора: операторы условия и переключатели.
Существуют два типа операторов условия: линейный опера тор и блочный оператор.
Линейный оператор используется для того, чтобы выполнить какой-либо один оператор, если некоторое условие будет истинным. Условие является выражением или функцией, истинность которых оценивается. Синтаксическая конструкция линейного оператора имеет две формы: безальтернативную и альтернативную:
безальтернативная: If условие Then Выражение альтернативная: If условие Then Выражение_1 Else Выражение_2
Программирование |
415 |
В безальтернативной форме при значении условия True сна чала выполняется выражение, следующее за ключевым словом Then, а затем - следующий в последовательности оператор. Если условие принимает значение False, то выражение, следующее за словом Then, не выполняется, а выполняется оператор, располо женный за этим выражением.
П р и м е р ы линейного оператора безальтернативной формы:
If intNamber<3 Then intResult = 10*2 ' Если переменная intNamber 'содержит значение меньше трех, то переменной 'intResult будет присвоено значение 20
If optAddition.Value = True Then z = x + у
П р и м е р линейного оператора альтернативной формы:
If intNamberO Then intResult = 10*2 Else intResult =30
В результате выполнения этого оператора переменной nResul будет присвоено значение 20, если переменная nNamber содержит значение меньше 3, в противном случае переменной nResult будет присвоено значение 30.
Блочный оператор используется, когда в случае истинности условия необходимо выполнить несколько программных опера торов (блок операторов). Блочный оператор также может быть безальтернативным и альтернативным. Структура безальтерна тивного блочного оператора:
If Условие Then Программный оператор 1 Программный оператор 2
Программный оператор N End If
Здесь End If указывает на окончание блока оператора If.
Альтернативный блочный оператор применяется в тех случа ях, когда при выполнении условия необходимо выполнить один набор программных операторов, а при невыполнении - другой. Это реализуется с помощью оператора If... Then ... Else. Его син таксическая конструкция:
If условие Then
416 |
Глава 8 |
Блок программных операторов, выполняемых при значении условия True:
Else
Блок программных операторов, выполняемых при значении усло вия False
End If
Операторы могут быть в л о ж е н н ы м и друг в друга. Такое вложение операторов применяется, если нужно проверить какоелибо условие при другом условии, которое является истинным (например, если фамилия Иванов и он торговый агент). Формат вложенного оператора:
If условие_1 Then
If условие_2 Then Программный оператор 1 Else
Программный оператор 2 Endlf
Endlf
П р и м е р применения вложенного оператора:
If Name = «Иванов» Then
If Rang = «Торговый агент» Then Text 1 .Text = Name & Rang Else
Text2.Text=«AreHTa с указанной фамилией в списке нет» Endlf
Endlf
При использовании вложенных операторов If важно не пере путать варианты сочетания условий. Нужно помнить правило: альтернатива Else считается принадлежащей ближайшему опера тору If, не имеющему ветви Else.
В системе VBA предусмотрена также конструкция для рабо ты с несколькими операторами If. Несколько операторов If при меняются в случаях, когда необходимо рассмотреть еще несколь ко условий в дополнение к исходному. Для этого служит конст рукция If... Then ... Elself. В отличие от вложенных операторов конструкция с несколькими операторами If позволяет проверить
Программирование |
417 |
дополнительное условие, если исходное условие принимает зна чение False. Синтаксическая конструкция записи нескольких опе раторов If:
If выражение_условия_1 Then Программный оператор 1
Elself выражение_условия_2 Then Программный оператор 2
Else
Программный оператор 3 Endlf
П р и м е р :
If CorrectAnsver.Text >=8 Then
Ball.Text =«Отлично»
Elself CorrectAnsver.Text >=6 Then
Ball.Text = «Хорошо»
Elself CorrectAnsver.Text >=4 Then
Ball.Text = «Удовлетворительно»
Else Ball.Text = «Неудовлетворительно»
Endlf
Приведенный код программы определяет количество правиль ных ответов и выставляет оценку. Он работает следующим обра зом. Сначала проверяется значение условия в операторе If. Если оно принимает значение True, то выполняется оператор (или блок операторов), следующий непосредственно за оператором If, пос ле чего программа переходит к выполнению оператора, следую щего за Endlf. Если первое условие принимает значение False, то программа переходит к выполнению первого оператора Elself, чтобы проверить выполнение его условия. Если оно имеет значе ние True, то выполняется оператор Ball = 4, и программа перехо дит к выполнению оператора, следующего за Endlf. В против ном случае эта последовательность действий повторится для сле дующего оператора Elself, и так до тех пор, пока не будут проверены все из них.
Переключатели в VBA реализуются оператором Select Case, который позволяет сделать выбор из нескольких альтернативных вариантов в зависимости от значения условного выражения. Син таксическая конструкция оператора:
418 |
Глава 8 |
Select Case Выражение
Case Значение 1
Программные операторы, выполняемые при совпадении Значе ния 1 и значения переменной:
Case Значение 2
Программные операторы, выполняемые при совпадении Значе ния 2 и значения переменной:
Case Значение N
Программные операторы, выполняемые при совпадении Значе ния N и значения переменной:
End Select
В операторе Select Case можно использовать операции отно шения. Для этого надо включить в выражение ключевое слово Is или ключевое слово То. Ключевое слово Is дает указание компи лятору сравнить значение проверяемой переменной со значением выражения, следующего за ключевым словом Is. Ключевое слово То задает диапазон значений.
П р и м е р :
Select Case ПравильныйОтвет.Тех!
Case 8 То 10
Bami.Text = «Отлично»
Case 6 То 7
Bami.Text = «Хорошо»
Case 4 То 5
Bami.Text = «Удовлетворительно»
Case Is < 4
Bami.Text = «Неудовлетворительно»
End Select
8.4.4. ПРОГРАММИРОВАНИЕ ЦИКЛОВ
Цикл - это оператор или группа операторов, которые про грамма многократно выполняет до тех пор, пока не получит ко манду на выполнение других операторов. Существуют два основ-
Программирование |
419 |
ных типа циклов - циклы со счетчиком (с известным числом по вторений) и циклы с условием. Циклы со счетчиком используют в тех случаях, когда необходимо повторить некоторые действия заданное число раз. Циклы с условием применяются тогда, когда некоторые действия в программе должны повторяться до тех пор, пока выполняется определенное условие, или до тех пор, пока не будет выполнено определенное условие.
Циклы со счетчиком
Циклы со счетчиком (с известным числом повторений) в VBA еще называют циклами For или циклами For ... Next. Так они на зываются потому, что начало и конец этих циклов определяются операторами For и Next. Синтаксис цикла For.. .Next таков:
For СчетчикЦикла= НачальноеЗначение То КонечноеЗначение_ [Step Шаг]
операторы
Next [СчетчикЦикла]
где For - ключевое слово, обозначающее начало цикла; СчетчикЦикла - переменная, определенная в качестве счетчика цикла; НачальноеЗначение - число, задающее начальное значение счетчика; То - ключевое слово Visual, разделяющее НачальноеЗначение и КонечноеЗначение; Конечное Значение - число, задающее значение счетчика, при котором цикл завершается;
Step - ключевое слово, используемое для задания шага цикла, необяза тельный аргумент; Шаг - число, задающее шаг цикла, т.е. значение, на которое увеличивает
ся (или уменьшается) значение счетчика на каждом шаге, это число может быть отрицательным;
Next - ключевое слово, обозначающее конец цикла.
Вначале цикла For ...Next определяется переменная-счетчик,
атакже начальное и конечное значения этой переменной. В самом начале выполнения цикла переменная-счетчик устанавли вается в начальное значение. Каждый раз, когда программа, прой дя через цикл, возвращается к его началу, значение счетчика уве личивается. Если используется ключевое слово Step, переменнаясчетчик изменяется в соответствии с числом, указанным после ключевого слова Step, например:
420 |
Глава 8 |
For I = 0 То 10 Step 2 ' Значение I будет увеличиваться на 2
Каждый раз, когда значение переменной-счетчика изменяет ся, оно сравнивается с заданным конечным значением счетчика. Если значение счетчика превышает конечное значение, програм ма выходит из цикла и переходит к той строке кода, которая сле дует за циклом.
П р и м е р :
Option Explicit
Dim I As Integer Dim Sum As Integer
Sum=0
For I = 1 To 4
Sum =Sum + 2 Next I
Этот цикл эквивалентен четырем операторам Sum =Sum + 2 в тексте программы.
Цикл For Next может быть прерван досрочно, например при достижении какого-либо условия. Для этого в нужном месте цикла нужно поместить оператор Exit For.
П р и м е р :
Option Explicit
Dim Sum As Integer
Dim j As Integer
Sum = 2
Forj = lTo 10
Sum = Sum + j
If Sum > 6 Then
Exit For
End If
Nextj
Text1.Text = Sum
В этом примере цикл прерывается досрочно, когда значение переменной Sum будет больше 9. В результате выполнения этого кода в текстовом окне будет показано вычисленное значение пе ременной Sum, равное 8.