- •Системное и прикладное программное обеспечение
- •Введение
- •Ввод данных. Логика условных операторов. Циклические вычисления
- •1.3 Циклы
- •1.7 Метод InputBox
- •Работа с макросами
- •Экранные формы. Автоматизация экранных форм
- •1.1.2 Элемент Надпись (Label)
- •1.1.3 Элемент Кнопка (CommandButton)
- •1.1.7 Элемент Полоса прокрутки (hScrolBar и vScrolBar)
- •1.1.8 Элемент Список (ListBox)
- •1.1.9 Элемент Комбинированное поле (ComboBox)
- •1.1.10 Массив элементов управления
- •2 Практическая часть
- •Меню и панели инструментов
- •Vba позволяет в Excel настраивать встроенные и создавать собственные управляющие панели.
- •2 Практическая часть
- •Управление приложением Excel с помощью vba
- •1.2 Объект Workbook
- •1.3 Объект Worksheet
- •1.4 Объект Range
- •Автоматизация. Использование объектов Microsoft Word
- •Доступ к данным с помощью ado
- •Процедуры обработки событий и надстройки
- •1.1 Где хранятся процедуры обработки событий
- •1.3 Процедуры, выполняемые при наступлении событий
- •1.4 Создание надстроек Excel
- •Литература
- •Содержание
1.7 Метод InputBox
Excel предлагает еще один путь получения данных от пользователя, который называется методом InputBox. Метод InputBox имеет следующий синтаксис:
Application. InputBox (приглашение, [заголовок], [по умолчанию], [слева], [сверху], [файл_справки], [содержание], [тип]
Оператор обязательно начинается со слова Application. Excel является собственником метода InputBox.
Основное отличие синтаксиса метода InputBox от функции InputBox заключается в последнем аргументе тип (type). Необязательный аргумент тип позволяет явно указать тип возвращаемого значения (таблица 1.4).
Таблица 1.4 – Значения аргумента тип
Значение |
Возвращаемое значение |
0 |
Формула |
1 |
Число |
2 |
Текст (строка) |
4 |
Логические значения, такие как ИСТИНА и ЛОЖЬ |
8 |
Ссылка на ячейку |
16 |
Значение ошибки |
64 |
Массив значений |
Обратите внимание, что в последовательности чисел, задающих значение аргумента тип, есть пропуски между 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% комиссионных.
Создайте следующую таблицу
-
А
В
1
Отдел
2
Товар в продаже?
3
Стаж работы в фирме
4
5
Комиссионные
Закончите код процедуры.
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