Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






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






Окна диалога

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

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

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

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

 

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

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

OK 1

Cancel 2

Abort 3

Retry 4

Ignore 5

Yes 6

No 7

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

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

 

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

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

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

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

Пример:

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

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

 

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

Sub диалог()

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

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

if Otv=6 then площадь_круга(радиус) 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

End Sub

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

Пример. Начиная с активной ячейки, по запрашиваемой размерности, построить пирамидальную матрицу, причем грани пирамиды равны 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

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

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал