Студопедия — Ввод данных. Логика условных операторов. Циклические вычисления
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Ввод данных. Логика условных операторов. Циклические вычисления






 

Цель работы: изучение способов управления потоками вы-полнения программ; приобретение навыков работы с операторами If, Select Case, For, Do.

 

1 Теоретические сведения

 

1.1 Создание процедур

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

1) открыть новую рабочую книгу;

2) выполнить команду Сервис → Макрос → Редактор VB;

3) в левой части окна редактора VB вы видите окно проектов. Откройте проект VBAProject (Книга 1) – Эта книга ¿. В контекстном меню выберите команду Insert → Module (Вставка → Модуль). В приложение будет добавлен модуль;

4) Insert → Procedure (Вставка → Процедура). В диалоговом окне Add Procedure (Добавить процедуру) введите имя процедуры. В секции Type (Тип) установите переключатель Sub (Подпрограмма) ¿;

5) в пустой строке находится текстовый курсор, предлагая начать ввод кода процедуры.

После создания процедуры вы можете ее сразу выполнить:

- Run Sub / UserForm ► или

- нажать < F5>.

Чтобы сохранить новую процедуру, надо сохранить рабочую книгу, где находится эта процедура.

 

1.2 Управляющие конструкции

Ветвление

Для организации ветвления в VBA используются:

– различные формы оператора ветвления If;

– оператор выбора Select Case.

Краткое ветвление:


If < условие> Then

< оператор 1>

< оператор 2>

...

End If

Полная форма оператора If:

If < условие> Then

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

Else

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

End If

Иногда приходится делать выбор одного из целой группы альтернативных действий на основе проверки нескольких различных условий. Для этого можно использовать цепочку операторов ветвления If... Then... ElseIf. Такие цепочки операторов обладают большой гибкостью и позволяют решить все проблемы. Однако, если выбор одной из нескольких возможностей все время основан на различных значениях одного и того же выражения, гораздо удобнее использовать специально предназначенный для этого оператор выбора Select Case:

Select Case < проверяемое выражение>

Case < список Значений 1>

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

Case < список Значений 2>

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

...

Case Else

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

End Select

Проверяемое выражение вычисляется в начале работы оператора Select Case. Это выражение может возвращать значение любого типа (логическое, числовое или строковое).

 

1.3 Циклы

Существуют две основные группы:

– циклы с условием Do... Loop;

– циклы с перечислением For... Next.

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


блока операторов, составляющих тело цикла. Такой цикл продолжает свою работу до тех пор, пока не будет выполнено определенное условие. Существует четыре вида циклов Do... Loop (таблица 1.1).

 

Таблица 1.1 – Синтаксис операторов цикла Do

Конструкция Описание
Do While < условие> < блок Операторов> Loop Условие проверяется до того, как выполняется группа операторов, образующих тело цикла. Цикл продолжает свою работу, пока это условие выполняется (т.е. имеет значение True), иными словами, в этой конструкции указывается условие продолжения работы цикла
Do < блок Операторов> Loop While условие> Условие проверяется после того, как операторы, составляющие тело цикла, будут выполнены хотя бы один раз. Цикл продолжает свою работу, пока это условие остается истинным, иными словами, в этой конструкции указывается условие продолжения работы цикла
Do Until < условие> < блок Операторов> Loop Условие проверяется до того, как выполняется группа операторов, образующих тело цикла. Цикл продолжает свою работу, если это условие еще не выполнено, и прекращает работу, когда оно станет истинным, иными словами, в этой конструкции указывается условие прекращения работы цикла
Do < блок Операторов> Loop Until < условие> Условие проверяется после того, как операторы, составляющие тело цикла, будут выполнены хотя бы один раз. Цикл продолжает свою работу, если это условие еще не выполнено, а когда оно становится истинным, цикл прекращает работу, иными словами, в этой конструкции указывается условие прекращения работы цикла

 

Имеются также две разновидности оператора цикла с перечислением For... Next:


 

1) при обработке массивов и в тех случаях, когда требуется повторить выполнение некоторой группы операторов заданное число раз, используется цикл For... Next со счетчиком. В отличие от циклов Do... Loop, данный тип цикла использует специальную переменную, называемую счетчиком, значение которой увеличивается или уменьшается при каждом выполнении тела цикла на заданную величину. Когда значение этой переменной достигает заданного значения, выполнение цикла заканчивается.

Синтаксис цикла:

For < счетчик> = < начальное Значение> To < конечное Значение>

[Step < приращение> ]

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

Next [< счетчик> ]

2) еще одна разновидность цикла For... Next используется в VBA при обработке объектов, составляющих массив или семейство однородных объектов. В разновидности цикла For Each... Next счетчик отсутствует, а тело цикла выполняется для каждого элемента массива или семейства объектов.

Синтаксис цикла:

For Each < элемент> In < совокупность>

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

Next [< элемент> ]

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

 

1.4 Выход из циклов

Досрочный выход из управляющей конструкции можно осуществить с помощью оператора Exit. Для досрочного выхода из цикла Do... Loop используется оператор Exit Do, а для выхода из циклов For – оператор Exit For.

 

1.5 Функция MsgBox

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


Полный перечень и описание всех встроенных процедур и функций можно найти в разделе Справочник по языку Visual Basic, Function.

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

Синтаксис функции MsgBox:

MsgBox (приглашение [, кнопки] [, заголовок] [, файл_справки, содержание])

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

Пример (рисунок 1.1):

Dim iResponse As Integer

iResponse = MsgBox (“Сохранить изменения в ’ ” & _

ThisWorkbook.Name & ” ’? ”, vbYesNoCancel + vbExclamation)

 

 

Рисунок 1.1

 

Использование круглых скобок в синтаксисе MsgBox указывает на то, что MsgBox является функцией, возвращающей какое-либо значение. Если скобки опущены – данное выражение значение не возвращает.

Если не указан аргумент кнопка, то VBA предполагает, что в диалоговом окне сообщения присутствует только кнопка ОК. Аргумент кнопка – очень “богатый” по своим возможностям аргумент, который позволяет управлять следующими параметрами окна сообщения:


- количество кнопок в окне;

- типы кнопок и их размещение в окне;

- пиктограмма, отображаемая в окне;

- какая кнопка назначается кнопкой по умолчанию;

- режим (модальность) окна сообщения.

В таблице 1.2 показаны возможные установки для этого аргумента. Значения аргумента разбиты на группы: первая группа значений устанавливает число и тип кнопок; вторая – позволяет выбирать стиль пиктограммы, отображаемой в диалоговом окне сообщения; третья – назначает кнопку по умолчанию; четвертая группа устанавливает режим окна сообщения. Для создания конечного значения аргумента кнопка можно использовать только одно значение из каждой группы, объединив их знаком “+”.

 

Таблица 1.2 – Установки для аргумента кнопки функции MsgBox

Группа Константа Зна- чение Описание
       
Группа 1 vbOKOnly   Отображает только кнопку ОК (установка по умолчанию)
  vbOKCancel   Отображает кнопки ОК и Отмена
  vbAbortRetryIgnor   Отображает кнопки С топ, Повтор и Пропустить
  vbYesNoCancel   Отображает кнопки Да, Нет и Отмена
  vbYesNo   Отображает кнопки Да и Нет
  vbRetryCancel   Отображает кнопки Повтор и Отмена
Группа 2 vbCritical   Отображает запрещающую пиктограмму (белый знак «х» в красном круге)
  vbQuestion   Отображает предупреждающую пиктограмму (знак вопроса на белом фоне)

 

       
    vbExclamation   Отображает предупреждающую пиктограмму (знак вопроса в красном треугольнике)
  vbInformation   Отображает информационную пиктограмму (знак “i” на белом фоне)
Группа 3 vbDefaultButton1   Первая кнопка – кнопка по умолчанию
  vbDefaultButton2   Вторая кнопка – кнопка по умолчанию
  vbDefaultButton3   Третья кнопка – кнопка по умолчанию
  vbDefaultButton4   Четвертая кнопка – кнопка по умолчанию
Группа 4 vbApplicationModal   Режим приложения: пользователь должен закрыть окно сообщения перед продолжением работы в текущем приложении
  vbSystemModal   Системный режим: все приложения недоступны, пока пользователь не закроет окно сообщения
Дополнительная группа VbMsgBoxHelpButton     Отображает кнопку Справка  
  vbMsgBoxSetForeground   Делает окно сообщения окном переднего плана
  vbMsgBoxRight   Отображает окно сообщения, выровненным по правому краю окна приложения
  vbMsgBoxRtlReading   Для иврита и арабского языка указывает, что текст должен выводиться справа налево

 


Аргумент заголовок позволяет задать текст, помещаемый в строке заголовка диалогового окна сообщения. Если этот аргумент опущен, то в строке заголовка отображается Microsoft Excel.

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

Мы рассматриваем функцию MsgBox, поэтому она должна возвращать значение. Возвращаемое значение зависит от того, на какой кнопке щелкнул пользователь в окне сообщения. Наилучший тип переменной, принимающей значение функции MsgBox – Integer (таб-лица 1.3).

 

Таблица 1.3 – Значения, возвращаемые функцией

Константа Значение Нажатая кнопка
vbOK   ОК
vbCancel   Отмена
vbAbort   Стоп
vbRetry   Повтор
vbIgnore   Пропустить
vbYes   Да
vbNo   Нет

 

1.6 Функция InputBox

Функция MsgBox хороша, когда от пользователя надо получить простые ответы. Если необходимо ввести число или текст, то применяется функция InputBox. Эта функция отображает диалоговое окно ввода, содержащее поле ввода, и поясняющий тест. Функция InputBox имеет следующий синтаксис:

InputBox (приглашение [, заголовок] [, по_умолчанию] [, хпоз] [, упоз] [, файл_справки, содержание])

Эта функция требует обязательного задания только аргумента приглашение. Значением аргумента приглашение служит текстовая строка, которая отображается в диалоговом окне ввода в качестве сообщения.

Аргумент заголовок используется для задания текста, который помещается в строке заголовка окна ввода. Если он не задан, то в строке заголовка отображается Microsoft Excel.


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

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

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

Возвращаемым значением функции InputBox является значение, введенное пользователем в поле ввода.

 

1.7 Метод InputBox

Excel предлагает еще один путь получения данных от пользователя, который называется методом InputBox. Метод InputBox имеет следующий синтаксис:

Application. InputBox (приглашение, [заголовок], [по умолчанию], [слева], [сверху], [файл_справки], [содержание], [тип]

Оператор обязательно начинается со слова Application. Excel является собственником метода InputBox.

Основное отличие синтаксиса метода InputBox от функции InputBox заключается в последнем аргументе тип (type). Необязательный аргумент тип позволяет явно указать тип возвращаемого значения (таблица 1.4).

 

Таблица 1.4 – Значения аргумента тип

Значение Возвращаемое значение
  Формула
  Число
  Текст (строка)
  Логические значения, такие как ИСТИНА и ЛОЖЬ
  Ссылка на ячейку
  Значение ошибки
  Массив значений

 

Обратите внимание, что в последовательности чисел, задающих значение аргумента тип, есть пропуски между 4 и 8 и 16 и 64. Можно суммировать значения данного аргумента. Если вы хотите, чтобы метод


мог возвращать как текст, так и числа, сделайте аргумент тип равным 3 (1 + 2). Если аргумент тип не задан, то метод InputBox по умолчанию возвращает текст.

Одним из преимуществ метода InputBox является возможность обработки ошибок. Другое отличие метода от функции заключается в значении, которое они возвращают, когда пользователь щелкает на кнопке Отмена. В этом случае функция InputBox возвращает строку нулевой длины, а метод InputBox – значение False (Ложь).

 

1.8 Именование аргументов

iResult = Application.InputBox(“Введите число: ”,,,,,,, 1)

Если в этом операторе пропустить хоть одну запятую, то получим сообщение об ошибке при его выполнении. Для исправления этого недостатка VBA поддерживает именование аргументов. Использование имен аргументов позволяет задавать их в любом порядке.

iResult = Application.InputBox(“Введите число: ”, Type: =1)

 

2 Практическая часть

 

З а д а н и е 1

Создайте процедуру под именем Комиссионные.

Указание – В данном задании на размер начисленных комиссионных влияют три фактора:

I фактор – находится ли товар в продаже. Если да, то все продавцы получают 1% комиссионных, если нет – 2% комиссионных;

II фактор – стаж работы продавца в фирме;

III фактор – отдел, в котором работает продавец. Например, для продавцов отдела фурнитуры полагается дополнительно 1% комиссионных.

Создайте следующую таблицу

  А В
  Отдел  
  Товар в продаже?  
  Стаж работы в фирме  
     
  Комиссионные  

 


Закончите код процедуры.

Dim sngCommission As Single

If Ucase (Range(“B2”)) = “Нет” Then

sngCommission = 0.02

If Range(“B3”). Value > = 5 And Range(“B3”) < 10 Then

ElseIf Then

EndIf

If Ucase (Range(“B1”). Value) = “Фурнитура” Then

EndIf

Else

EndIf

Range(“B5”). Value = sngCommission

В рабочий лист вставьте командную кнопку. Назначьте ей про-цедуру Комиссионные.

Введите в ячейки В1, В2, В3 информацию.

Выполните процедуру.

Указание – Функция VBA Ucase преобразует все символы текстового аргумента в верхний регистр.

 

З а д а н и е 2

Создайте процедуру под названием Скидка. Процедура должна вывести на экран окно ввода, предлагающее ввести категорию скидки: 1, 2, 3 и 4. С помощью оператора Select Case организуйте вывод величины скидки в окне сообщения. Категории 1 соответствует скидка 5%, категории 2 – 10%, категории 3 – 15% и категории 4 – 20%.

 

З а д а н и е 3

Создайте процедуру под именем ОбратныйСчет. Эта процедура будет выводить последовательность окон сообщения, показывающих значения переменной “счетчик” при отсутствии параметра шаг и при его отрицательном значении.


Указание – Вы можете воспользоваться следующей конструкцией:

  Dim As For To MsgBox Next For To Step MsgBox Next

Выполните процедуру.

 

З а д а н и е 4

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

Создайте другую процедуру и назовите ее Зарплата. Процедура должна считать недельную зарплату при условии почасовой оплаты. Предположим, что минимальная оплата рабочего часа составляет 6 у.е. Примените оператор Do … Loop для управления окном ввода, где пользователь должен ввести собственную почасовую ставку. Используйте суммарное количество рабочих часов в неделю, подсчитанное процедурой Рабочие часы. Итоговое значение выведите на экран с помощью сообщения.

Совет: объявите переменную, содержащую суммарное количество рабочих часов в неделю, как глобальную (Public) переменную.

 

3 Контрольные вопросы

 

3.1 Какие два основные оператора используются для управления потоком выполнения приложений?

3.2 Назовите два основных типа операторов цикла в VBA.

3.3 Какие есть два типа оператора Do … Loop?

3.4 Какой оператор позволяет досрочно выйти из цикла?

3.5 Какой тип данных возвращаемого значения метода InputBox?

3.6 Какой тип данных возвращаемого значения окна сообщения?


Лабораторная работа 2

 







Дата добавления: 2014-11-10; просмотров: 790. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

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

Йодометрия. Характеристика метода Метод йодометрии основан на ОВ-реакциях, связанных с превращением I2 в ионы I- и обратно...

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

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Механизм действия гормонов а) Цитозольный механизм действия гормонов. По цитозольному механизму действуют гормоны 1 группы...

Studopedia.info - Студопедия - 2014-2024 год . (0.014 сек.) русская версия | украинская версия