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

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 у.е. Примените оператор DoLoop для управления окном ввода, где пользователь должен ввести собственную почасовую ставку. Используйте суммарное количество рабочих часов в неделю, подсчитанное процедурой Рабочие часы. Итоговое значение выведите на экран с помощью сообщения.

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

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

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

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

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

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

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

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

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