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

Макросы занятие 7. Монопольные окна диалога.

Окна диалога

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

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

Различают два типа окон диалога: MsgBoxиInputBox.

Первое – окно сообщений. Оно может иметь разные наборы кнопок, задаваемых с помощью одной из набора констант. Например, «Да» и «Нет» (vbYesNo) или «Прервать» «Повторить» «Игнорировать» (vbAbortRetryIgnore). Константу можно не задавать, тогда окно диалога при вызове будет выведено с кнопкой ОК.

VBAпомогает пользователю определиться с порядком настроек окна сразу после набора инструкцииMsgBox(комментарий, константа набора кнопок, наименование окна…).

Значения, возвращаемые диалоговым окном при нажатии соответствующей кнопки:

OK 1

Cancel 2

Abort 3

Retry 4

Ignore 5

Yes 6

No7

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

Otv=MsgBox(“Коррекция – да, Новый груз – нет”,vbYesNo,”Ответьте!”), гдеvbYesNo– константа из окна списка, предлагаемого при заполненииMsgBox. При нажатии на «Да»otv=6, «Нет»otv=7. Далее через оператор условия можно выполнить ветвление программы.

Второй тип окна – окно ввода значений.

Предназначено для присвоения переменной конкретного значения по ходу выполнения программы. Синтаксис применения:

переменная=InputBox(“коментарий или вопрос”[,”заголовок”][,значение по умолчанию])

Содержимое в квадратных скобках общепринято считать как необязательные параметры.

Пример:

Razmer=InputBox(“Введите размерность”,”Окно ввода”,7)

В программе переменной Razmerбудет присвоено значение 7 по умолчанию или измененное пользователем при нажатии на «Да» или пустое при нажатии на “Cancel”.

Пример. Вызвать функцию площади круга или функцию длина окружности в диалоге.

Subдиалог()

радиус =InputBox(“Введите радиус круга”,”Окно ввода”,10)

Otv=MsgBox(“Площадь круга – да, Длина окружности – нет”,vbYesNo,”Ответьте!”)

ifOtv=6thenплощадь_круга(радиус)elseдлина_круга(радиус)

End Sub

Примечание. Предполагается, что вызываемые функции «площадь_круга», «длина_круга» запрограммированы и находятся в доступных модулях (см.занятие 2).

Пример. По запрашиваемой размерности построить единичную треугольную матрицу.

Subтреуг_матр1()

Range(“A1”).Select

Razm=InputBox(“Введите размерность матрицы”,”Окно ввода”,9)

for i=1 to Razm

for j=1 to i

Cells(i,j)=1

Next j

Next i

EndSub

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

Пример. Начиная с активной ячейки, по запрашиваемой размерности, построить пирамидальную матрицу, причем грани пирамиды равны 1, а центральное значение – номер слоя пирамиды вида:

1

1 2 1

1 2 3 2 1

Sub пирамида()

Ns= ActiveCell.Row

Nk= ActiveCell.Column

Razm=InputBox(“Введите размерность пирамиды”,””,9)

If Razm>Nk then

Razm=Nk

MsgBox “Размерность будет изменена до” + Str(Nk)+” строк”

End If

for i=1 to Razm

for j=1 to i

Cells(i+Ns-1, Nk+j -1) = i - j + 1

Cells(i+Ns-1,Nk-j+1) = i - j + 1

Next j

Next i

End Sub

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

Задания

1. По заданной размерности построить треугольную единичную матрицу, а затем с цифрами по порядку, начиная с первой верхней ячейки

2. По заданной размерности построить «пирамиду», начиная с активной ячейки с учетом ограничений по колонкам

1

2 1 2

3 2 1 2 3

3. С учетом ограничений по колонкам и строкам «Песочные» часы вида

3 2 1 2 3

2 1 2

1

1

2 1 2

3 2 1 2 3

4. В файле ex2.xlsисправить программный код для вставки формул так, чтобы формулы вставлялись в произвольное количество строк

5. Для вектора произвольной размерности (в столбце Эл.таблицы) по выбору через диалог выполнять операции:

А) сумма элементов

Б) среднее

В) сумма четных элементов

Г) определить минимум и максимум