Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_VBA_2012.doc
Скачиваний:
7
Добавлен:
29.02.2016
Размер:
1.58 Mб
Скачать

3 3

Министерство образования Республики Беларусь

Министерство образования и науки Российской Федерации

ГОСУДАРСТВЕННОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ БЕЛОРУССКО-РОССИЙСКИЙ УНИВЕРСИТЕТ

Кафедра «Автоматизированные системы управления»

ИНФОРМАТИКА

ЯЗЫК VBA

Могилев 2008

Содержание

Введение………………………………………………………………………4

  1. Введение в программирование…………………………………………..5

    1. Основные понятия программирования………………………………….5

    2. Основы программирования Visual Basic for Applications (VBA)………………………………………….……………………………………..6

    3. Типы данных и переменные…………………………………………….….8

    4. Организация ввода-вывода……………………………………………..12

2 Операторы……………………………………………………………..…..16

2.1 Оператор присваивания (=) ……………………………………….…...16

2.2 Условный оператор (If…Then…Else…End If)………………………..17

2.3 Оператор цикла с параметром (For…Next)……………………………18

2.4 Циклы с предусловием и постусловием……………………………….20

3 Массивы……………………………………………………………………22

4 Процедуры и функции…………………………………………………….25

5 Обработка строк……………………………………………………….......28

6 Форма и элементы управления…………………………………………...31

7 Методические рекомендации по оформлению пояснительной записки курсового проекта…………………………………………………………………..42

Список литературы………………………………………………….…..49

Введение

В методических указаниях приведены основные сведения о системе программирования VisualBasicforApplication(VBA) ( в качестве приложения будет табличный процессорExcel), которые могут использоваться при выполнении контрольных и курсовых работ, а также могут использоваться при подготовке к экзаменам. Эти методические указания помогут сделать первые шаги в освоенииVBA. Постепенно, переходя от основных понятий и алгоритмов, мы перейдем к проектированию пользовательских форм, научимся работать с текстовыми полями, кнопками, флажками, списками и другими управляющими элементами, что позволит создавать программы с дружественным интерфейсом под платформуWindows.

При описании основных операторов приведен общий синтаксис (запись) оператора, а затем рассмотрены примеры. При этом в угловых скобках “< >” указывается параметр, который пользователь задает сам, а в “[ ]” указывается необязательный параметр, который может быть применен или опущен по необходимости.

1 Введение в программирование

1.1 Основные понятия программирования

Величина —это отдельный информационный объект, который имеет имя, значение и тип.

Величины бывают постоянными и переменными.

Постоянная величина (константа) не изменяет своего значения в ходе выполнения алгоритма. Константа может обозначаться собственным значением (числа 10, 3.5)или символическим именем (число π).

Переменная величина может изменять значение в ходе выполнения алгоритма. Переменная всегда обозначается символическим именем (X,A,R5 и т.п.), начинается с буквы и не содержит пробелов.

Тип величины определяет множество значений, которые может принимать величина, и множество действий, которые можно выполнять с этой величиной. Основные типы величин: целый, вещественный, символьный, логический.

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

А+В; 2Х -Y;K+L-sin(X).

Решение любой задачи имеет три части:

  1. ) ввод данных;

  2. ) обработка данных;

  3. ) вывод результата.

Команда ввода —команда, по которой значения переменных задаются через устройства ввода (например, клавиатуру).

Команда вывода — команда, по которой значение величины отражается на устройстве вывода компьютера (например, на экран дисплея).

Обработка данных может включать команды присваивания, ветвления и цикла.

Команда ветвления разделяет алгоритм на два пути в зависимости от некоторого условия, затем исполнение алгоритма выходит на общее продолжение. Ветвление бывает полное и неполное.

Команда цикла обеспечивает повторное выполнение последовательности команд (тела цикла) по некоторому условию.

Для условного обозначения алгоритмических операций применяются схемы алгоритма (таблица 1).

Потоки данных и потоки управления отображаются линиями. Направления слева направо и сверху вниз являются стандартными, нестандартные направления обозначаются стрелками. Следует избегать пересечений линий.

Таблица 1

Символ

Значение

Применение

Процесс

Обработка данных любого вида (выполнение операции или группы операций)

Решение

Выбор направления выполнения программы в зависимости от некоторых переменных условий

Данные

Обозначает ввод, вывод данных

Типовой процесс

Одна или несколько операций, которые определены в другой программе, модуле

Модификация

Выполнение операций, меняющих команды или группы команд

Пуск-останов

Начало, конец обработки данных или выполнения программы

1.2 Основы программирования на Visual Basic for Applications (VBA)

В данных методических указаниях рассматривается Visual Basic for Applications (VBA) - встроенный язык программирования приложений Microsoft Office, в частности, электронных таблиц Excel.

Для создания программы на VBA необходимо находясь в рабочей книге Excel, выполнить команду Сервис/Макрос/Редактор Visual Basic. Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Вид Microsoft Excel. Программа размещается в модуле, который добавляется к файлу Excel и будет сохраняться вместе с ним.

Интерфейс редактора VBA состоит из следующих основных компонентов: окно проекта, окно свойств, окно редактирования кода, окна форм, меню и панели инструментов (рисунок 1).

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

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

В окне свойств перечисляются основные установки свойств выбранной формы или элемента управления. Используя это окно, можно просматривать свойства и изменять их установки. Для просмотра свойств выбранного объекта надо либо щелкнуть кнопку Окно свойств, либо выбрать команду Вид/ Окно свойств (View/Property Window).

Программа (код программы) записывается в окне кода. Окно кода используется при написании любой программы VBA, будь это код макроса, запуск которого осуществляется при нажатии кнопки в созданной пользователем форме, или подпрограмма. Код программы вводится непосредственно в окно кода, так же как текст в любом текстовом редакторе.

Для того чтобы получить окно модуля, необходимо выполнить следующие действия: Вставка / Модуль(Insert / Module).

Рисунок 1 - Интерфейс редактора VBA

VBA является современным языком программирования, полностью оснащенным всеми необходимыми структурными операторами и типами данных.

Кроме того, в VBA применяются объекты, что делает его использование при разработке прикладных программ более понятным и легким. В объектно-ориентированном программировании данные и код, который манипулирует этими данными, объединены в структуре, называемой объектом. Объект обладает определенными свойствами и методами.

Свойства - это характеристики объекта, такие как размер, цвет, положение на экране, или состояние объекта, например доступность или видимость.

Методы – это действия, выполняемые над объектом.

Пример.

Worksheets(“Лист1”).Visible = False

С помощью установки свойству Видимость значения Ложь скрывается рабочий лист “Лист 1”.

Worksheets (“Лист 2”).Delete

При помощи метода Delete удаляется этот рабочий лист “Лист 2” .

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

Пример.

Workbooks("Kнигa1").Worksheets(“Лucm1").Range("A14").Fontполучаем доступ к рабочей книге "Книга1", рабочему листу “Лист1", шрифту ячейки "A14".

Объектами Excelявляются таблицы, рабочие книги, диаграммы, области ячеек и др. Семейство представляет собой объект, содержащий несколько других объектов, как правило, одного и того же типа.

Например, семейство Workbooks объединяет все открытые рабочие книги.

Обратиться к элементу семейства можно по имени или номеру.

Пример:

Worksheets (“Лист1”) или Worksheets (1)

1.3 Типы данных и переменные

Тип данных определяет, каким образом величина хранится в памяти компьютера. Задавая тип данных, мы налагаем некоторые ограничения на сохраняемую величину, а именно: величина переменной, количество разрядов и др.

Наиболее распространенные типы данных приведены в таблице 2.

Таблица 2

Тип данных

Диапазон

Byte (целый без знака)

От 0 до 255

Boolean (логический)

True или False

Integer (целый)

от - 32768 до 32767

Long (длинный целый)

от - 2147483648 до 2147483647

Single (число с плавающей запятой обычной точности)

От - 3.402823Е +38 до - 1.401298Е-48 и от 1.401298Е-45 до 3.402823Е+38

Double (число с плавающей запятой двойной точности)

От -1,79769313486232Е308 до -4,94065645841247Е-324 для отрицательных значений; от 4,94065645841247Е-324 до 1,79769313486232Е308 для положительных значений

Date (дата и время)

от 01. 01. 100 до 31. 12.9999

String (строка)

от 0 до 65535 символов

Variant

Любой встроенный тип данных

Переменные - это поименованные области в памяти компьютера. После вычисления какого-либо значения оно записывается в память, чтобы затем можно было к нему возвращаться. Использование переменных дает Visual Basic возможность создавать прямое соответствие между областями памяти и заданным именем. Затем можно использовать это имя в программе.

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

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

Dim <ИмяПеременной> [As Тип]

Пример.

Dim A As Integer

Переменная А объявляется как целочисленная

Dim Фамилия As String

Переменная Фамилия объявляется как строка символов

Константы, в отличие от переменных, не могут изменять свои значения. Использование констант делает программы легче читаемыми и позволяет проще вносить исправления —отпадает необходимость многократно исправлять значения по тексту программы, т. к. достаточно ввести новое значение при определении константы.

Const <ИмяКонстанты> [As Single] = <Выражение>

Пример

Const ПроцентнаяСтавка As Single =0.2

Const g=9.8

Над переменными и константами могут выполняться операции.

В таблице 3 представлены математические операции VBA.

Таблица 3

Выражение

Операция

Пример

А

B

Результат

A+B

Сложение

5

2.75

7,75

А – В

Вычитание

5

2,75

2,15

А * В

Умножение

2

6

12

А/В

Деление

7

2

3.5

A \ В

Целочисленное деление

7

2

3

A mod В

Остаток от деления по модулю

7

2

1

A^B

Возведение в степень

2

3

8

Стандартные математические функции VBA представлены в таблице 4.

Таблица 4

Обращение

Функция

Abs(х)

Модуль аргумента

Atn(x)

Арктангенс (радианы)

Соs (x)

Косинус (x в радианах)

Eхр(х)

ex — экспонента

Int(x)

Целая часть х, полученная отбрасыванием дробной части

Fix(x)

Число, округленное до ближайшего меньшего целого

Log(x)

Натуральный логарифм

Sin(x)

Синус (х—в радианах)

Sqr(x)

Корень квадратный

Tan(x)

Тангенс числа

Старшинство операций (в порядке убывания приоритета):

  • операции в скобках;

  • вычисление функции;

  • ^ ;

  • смена знака;

  • *, /, \, mod;

  • +, -

  • = , >,<,>=,<=,<>,

  • Not,

  • And,

  • Or,

  • Xor.

Логические выражения в результате вычисления принимают логические значения True(Истина) илиFalse(Ложь). Операндами логического выражения могут быть логические константы, переменные логического типа, отношения. ВVBAчаще используют 4логические операции: отрицание —NOT, логическое умножение —AND, логическое сложение —OR, исключающее “или” —XOR. Результаты логических операций для различных значений операндов приведены в таблице 5. Использованы обозначения: Т —True,F —False.

Таблица 5

А

В

not A

A and В

А оr В

А хоr В

Т

Т

F

Т

Т

F

Т

F

F

F

Т

Т

F

F

Т

F

F

F

F

Т

Т

F

Т

Т

Пример. Записать математические выражения в виде арифметических выражений на VBA

Математическое выражение

Выражение на VBA

x2-7x+6

x^2-7*x+6

(Abs(x)-Abs(y))/(1+Abs(x*y))

ln

Log(Abs((y-Sqr(Abs(x)))*(x-y/(z+(x)^2/4))))

Функции преобразования типов выполняют преобразование переменной некоторого типа в заданный тип (таблица 6). Чаще всего выполняется преобразование из строки символов в число и числа в его строковое представление.

Таблица 6

Функция

Назначение

Val (строка)

Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа

Str(число)

Возвращает значение типа variant (String), являющееся строковым представлением числа

В качестве допустимого разделителя функция Str воспринимает только точку. При наличии другого десятичного разделителя следует использовать функцию CStr. Остальные функции преобразования из данного типа в указанный приведены в таблице 7.

Таблица 7

Функция

Тип, в который преобразуется выражение

CBool

Boolean

CByte

Byte

CDate

Date

CDbl

Double

CInt

Integer

CLng

Long

CSng

Single

CStr

String

Функции проверки типа позволяют узнать, является ли переменная выражением определенного типа (таблица 8).

Таблица 8

Функция

Проверка

IsNumeric(х)

Является ли переменная числовым значением

IsNull(х)

Является ли переменная пустым значением (Null)

IsError(х)

Является ли переменная кодом ошибки

1.4 Организация ввода-вывода

Ввод и вывод данных в VBA может выполняться несколькими способами: с листа Excel, с помощью диалоговых окон, с помощью пользовательской формы.

Для ввода данных с листа или вывода на лист используется объект Worksheets и его методы Range или Cells.

Метод Rangeиспользует в качестве аргументов одну или две ссылки на ячейки и возвращают объектRange. Ссылки на ячейки должны быть оформлены в стилеА1 (колонка-буква-строка-число). Ссылка на единичную ячейку, использованная в качестве аргумента, возвращаетобъект Range для единичной ячейки. Две ссылки на единичные ячейки возвращают объект Range для прямоугольной области, заключенной между этими двумя ячейками:

X = Worksheets(“Лист1”).Range(“B1”).Value

Присваиваем переменной Х значение ячейки B1 листа Лист1.

Worksheets(“Лист1”).Range(“B1”).Value = Х

Выводим в ячейку B1 листа Лист1 значение переменной Х

Worksheets(“Лист1”).Range(“C1”,”D6”).Value = 2

Выводим в ячейки C1 и D6 листа Лист1 число 2

Worksheets(“Лист1”).Range(“В7:С9”).Value = 3

Выводим в диапазон ячеек “В7:С9” листа Лист1 число 3

Метод Cells, получая в качестве аргументов два целых числа, возвращают объект, содержащий единичную ячейку. Аргументы определяют номера строки и столбца выбранной ячейки.

A=Worksheets(1).Cells(1,2).Value

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

Worksheets(1).Cells(2,2).Value= Х

В ячейку второй строки и второго столбца заносится значение переменной Х

Для ввода данных с клавиатуры используется окно ввода InputBox (таблица 9), а для вывода информации на экран – окно сообщений MsgBox(таблица 10).

Таблица 9

Функция

InputBox

Выводит на экран диалоговое окно, содержащее сообщение, поле ввода и две кнопки OK и Cancel. Устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string по нажатию кнопки OK, содержащее текст, введенный в поле. При нажатии кнопки Cancel возвращает пустую строку.

Синтаксис:

InputBox(prompt[, title] [, default])

  • prompt — строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (chr (13)), символа перевода строки (chr(10)) или комбинацию этих символов (chr( 13) & Chr (10));

  • title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения;

  • default — строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.

Пример.

Имя =InputBox(“Введите Ваше имя”, “Пример окна ввода”)

На экране появится окно.

Рисунок 2 – Пример окна ввода

Переменной Имя будет присвоено значение типа String, введенное пользователем.

Следует учесть, что, поскольку введенные пользователем данные считаются текстом, при вводе числовых значений необходимо преобразовать их к одному из числовых типов данных с помощью функции преобразования типа, например val илиCDbl.

X=CDbl(InputBox(“Введите значение Х”, “Пример окна ввода”, “1,678”))

В результате выполнения этой операции на экране появится окно ввода.

Рисунок 3 – Пример окна ввода

Введенное пользователем значение будет преобразовано к типу Double и присвоено переменной Х. Если пользователь не будет вводить значение, а просто нажмет кнопку OK, переменной Х будет присвоено значение по умолчанию – 1.678.

Таблица 10

Процедура

MsgBox

Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. Синтаксис:

MsgBox(prompt[, buttons] [, title])

Аргументы:

prompt — строковое выражение, отображаемое как сообщение в диалоговом окне;

buttons — числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0. Значения констант, определяющих число и тип кнопок используемого значка, приведены в таблицах 11—12;

title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

Значения параметра Buttons процедуры MsgBox, определяющие отображаемые в диалоговом окне кнопки, приведены в таблице 11:

Таблица 11

Константа

Значение

Отображаются кнопки

vbOKOnly

0

OK

VbOKCancel

1

OK, Отмена

VbAbortRetryIgnore

2

Стоп, Повтор, Пропустить

VbYesNoCancel

3

Да, Нет, Отмена

VbYesNo

4

Да, Нет

VbRetryCancel

5

Повтор, Отмена

При написании программ с откликом, когда нужно знать, какая кнопка диалогового окна была нажата (таблица 12), вместо возвращаемых значений удобнее использовать следующие константы VBA, которые делают код программы более читаемым и, к тому же, их легко запомнить.

Таблица 12

Константа

Значение

Нажатая кнопка

vbOK

vbCancel

vbAbort

vbRetry

vbIgnore

vbYes

vbNo

1

2

3

4

5

6

7

ОК

Отмена (Cancel)

Прервать (Abort)

Повторить (Retry) Пропустить (Ignore)

Да (Yes)

Нет (No)

Пример.

N = MsgBox (“Значение переменной Х=” & X & Chr(10) & “Продолжить вычисления?”, VbYesNo, “Пример окна MsgBox”)

Если к моменту выполнения данного оператора переменная Х равнялась числу 2,14587895, то на экране появится следующее окно

Рисунок 4 – Пример окна сообщений

Пользователь может нажать одну из кнопок – Да или Нет. Если будет нажата кнопка Да, переменной N будет присвоено значение 6 , если будет нажата кнопка Нет – 7. Проанализировав в дальнейшем это значение, можно выбрать одну из ветвей выполнения программы.

Часто процедура MsgBox используется в «минимальном» варианте - только для вывода сообщения, с одной кнопкой – OK. В этом случае аргументы не берутся в скобки. Например:

MsgBox “Значение переменной Х=” & X

Рисунок 5 – Пример окна сообщений

2 Операторы

2.1 Оператор присваивания (=)

Оператор присваивания позволяет задать (присвоить) переменной значение другой переменной, выражения или объекта.

Синтаксис: <переменная> <выражение>

Порядок выполнения: вычисляется значение <выражения>и присваивается полученное значение <переменной> (вычисляется значение выражения, стоящего справа от знака присваивания, и присваивается переменной, стоящей слева от знака присваивания).

Изображение в блок – схеме:

Пример. Вычислить значение функцииf(x,y)=|x|+sin2(y+5).

Public Sub prog1()

Dim x As Double, y As Double Dim f As Double

x=CDbl(InputBox("Введите х"))

y=CDbl(InputBox("Введите y"))

f = Abs(x) + Sin(y + 5) ^ 2

MsgBox "Результат = " & f

End Sub

Заголовок процедуры prog1 (начало программы)

Описание переменных: переменные x,y,f вещественного типа (Double)

Ввод значений х и у. Функция InputBox выводит на экран окно с полем ввода и сообщением «Введите х» и возвращает значение типа строка (String). Для преобразования вводимого значения к вещественному типу – Double- используется функция CDbl.

Вычисление значения переменной f: функция Abs(аргумент) возвращает модуль аргумента, Sin(аргумент) – синус аргумента, ^ - степень числа.

Процедура MsgBox выводит на экран окно сообщений с текстом «Результат = 12» (если f=12).

Конец программы.

Рисунок 6 - Блок-схема программыprog1

2.2 Условный оператор (If…Then…Else…End If)

Условный оператор позволяет выбирать и выполнять действия в зависимости от истинности некоторого условия.

Синтаксис: условный оператор имеет два варианта синтаксиса:

a) однострочная форма записи условного оператора:

If <условие> Then [<операторы 1>] [Else [<операторы 2>]];

б) блочная форма записи условного оператора:

If <условие 1> Then

[<операторы 1>]

. . .

[ElseIf <условие n> Then

[<операторы n> ]…

[Else]

[<ИначеОператоры>]]

End If.

Порядок выполнения: вычисляется значение<условие>.Оно может принимать значенияTRUE (Истина) илиFALSE (Ложь). Если<условие>принимает значениеTRUE, то выполняются [<операторы 1>] (операторы веткиThen), в противном случае - [<операторы 2>] (операторы веткиElse).

Изображение в блок – схеме:

Пример. Определить вид введенного числа – положительное, отрицательное или ноль.

Public Sub prog2()

Dim x As Double

Dim s As String

x=Worksheets(1).Range("A1")

If x > 0 Then

s = "положительное"

ElseIf x = 0 Then

s = "ноль"

Else

s = "отрицательное"

End If

Worksheets(1).Range("C2")=s

End Sub

Описание переменной строкового типа

Ввод значения переменной х. Значение располагается на Листе1 (Worksheets(1)) в ячейке А1 (Range ("A1")).

Условный оператор. Если условие принимает значение True (Истина), то выполняется оператор присваивания ветки Then (s=”положительное”) и завершается условный оператор, в противном случае проверяется второе условие: x=0. Если условие True, то s присваивается значение “нуль”, иначе – “отрицательное”.

Вывод результата–s–на лист1 в ячейку С2.

Рисунок 7 - Блок-схема программыprog2

2.3 Оператор цикла с параметром (For…Next)

Оператор цикла Forпозволяет повторять группу операторов заданное число раз.

Синтаксис: For<счётчик_цикла>=<начало>To<конец> [Step<шаг>]

<тело цикла>

[Exit For]

. . .

Next[<счётчик_цикла>],

где <счётчик_цикла> — числовая переменная;

<начало>- начальное значение (выражение) переменной<счётчик_цикла>;

<конец> - заключительное значение (выражение) переменной<счётчик_цикла>;

<тело цикла> -это последовательность операторов, которая будет выполнена заданное число раз.

Порядок выполнения: переменной <счётчик_цикла> присваивается значение <начало> и проверяется условие:<начало> <конец>; если условие неверно, то<тело цикла> не выполняется и управление передается на оператор, следующий заNext. Если же условие выполняется, то выполняется<тело цикла>, затем значение<счётчик_цикла> изменяется на значение<шаг>(увеличится в случае положительного значения<шаг>, и уменьшается при отрицательном значении<шаг>). Данный процесс будет выполняться, пока значение<счётчик_цикла> не достигнет значения<конец>(если шаг положителен, цикл завершится, когда впервые выполнится условие: <счетчик_цикла> <конец>. Если шаг цикла отрицателен, условие его завершения: <счетчик_цикла> <конец> ). Досрочно завершить циклFor…Nextможно и с помощью оператораExit For. Такие операторы могут быть расположены в тех местах тела цикла, где требуется из него выйти, не дожидаясь выполнения условия завершения.

Изображение в блок-схемах:

Пример. Вычислить n-ый член последовательности, заданной формулой , если.

Public Sub prog3()

Dim n As Byte

Dim an As Integer,a1 As Integer, a2 As Integer

n=CByte(InputBox("n ="))

a1 = 1: a2 = 1

For i = 3 To n

an = a1 + a2

a1 = a2: a2 = an

Next i

MsgBox an

End Sub

Описание переменной типа Byte

Ввод значения переменной n (номера элемента последовательности) через окно ввода и преобразование введенного значения к типу Byte

Присваивание начальных значений переменным а1 и а2 (двоеточием разделяются операторы, записанные на одной строке)

Организация цикла For…Next, в котором счетчик i изменяется от 3 до n с шагом 1

Вычисление следующего члена последовательности как сумму двух предыдущих членов последовательности

Изменение последнего и предпоследнего значений последовательности на данный момент

Увеличение счетчика на 1 (конец тела цикла)

Рисунок 8 - Блок-схема программыprog3

2.4 Циклы с предусловием и постусловием

Циклы данного вида используются, когда заранее неизвестно, сколько раз будет выполняться тело цикла.

Циклы с предусловием (DoWhile…Loop,While…Wend,DoUntil…Loop) представлены в таблице 13, а операторы циклов с постусловием (Do…LoopWhile,Do…LoopUntil) - в таблице 14.

Отличие циклов с предусловием от циклов с постусловием заключается в том, что тело цикла первых может не выполниться ни разу, в то время как тело цикла с постусловием всегда выполнится хотя бы один раз.

Таблица 13

Синтаксис

Do While <условие>

<тело цикла>

[Exit Do]

Loop

While <условие>

<тело цикла>

Wend

Do Unlil <условие>

<тело цикла>

[Exit Do]

Loop

Порядок выполнения

<Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (TRUE) (цикл продолжается при истинном значении <условия>). Если <условие> ложно (FALSE), то выполняются операторы, стоящие за циклом. В первом случае есть возможность досрочного выхода из цикла (это реализовано через Exit Do)

<Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do)

Изображение в блок-схемах

Таблица 14

Синтаксис

Do

<тело цикла>

[Exit Do]

Loop While <условие>

Do

<тело цикла>

[Exit Do]

Loop Until <условие>

Порядок выполнения

<Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (цикл продолжается при истинном значении <условия>). Если <условие> ложно, то выполняются операторы, стоящие за циклом. Предоставлена возможность досрочного выхода из цикла (это реализовано через Exit Do)

<Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do)

Окончание таблицы 14

Изображение в блок-схемах

Пример. Организовать ввод последовательности целых чисел, пока их сумма не превысит целого числа m. Вывести количество введенных чисел.

Public Sub prog4()

Dim x As Integer, m As Integer

Dim s As Integer

Dim i As Integer

m=InputBox("Введите число m")

i = 1

s =InputBox("Введите 1 число")

Do While s <= m

i = i + 1

x=InputBox("Введите " & i & "число")

s = s + x

Loop

MsgBox ("Количество чисел " & i)

End Sub

Ввод предельного числа

Номер вводимого числа последовательности

Ввод первого числа последовательности

Цикл с предусловием: тело цикла выполня-

ется пока условие s<=m имеет значение

Истина (TRUE)

Тело цикла:

увеличение номера на 1;

ввод очередного (i-го) значения;

добавление введенного значения к преды-

дущему значению суммы

Конец тела цикла

Вывод значения переменной i

Рисунок 9. Лист 1 - Блок-схема программы prog4

Рисунок 9. Лист 2 - Блок-схема программыprog4. Продолжение