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

Макросы занятие 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. Для вектора произвольной размерности (в столбце Эл.таблицы) по выбору через диалог выполнять операции:

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

Б) среднее

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

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