Редактора Visual Basic Для записи текста программы необходимо создать модуль: Меню "Вставка" Модуль Модуль создается только один раз и в нем записываются все операторы Visual Basic. Любая программа

Вид материалаПрограмма

Содержание


Схема алгоритма программы
Элемент управления
Банк - сумма, которая хранится в банке игрока, Партия
Задание 5. Введите текст процедуры инициализации формы
Бросить монету
Задание 9. Дополните свои программы, разработанные в ходе выполнения предыдущей работы(VBA2), следующими сервисными возможностям
Подобный материал:
1   2   3   4   5   6   7   8
^

Схема алгоритма программы





Начало





Ввод xn;xk;dx







x=xn, ..xk,







y=x+sin(x)







Формирование Rez







x=x+dx


нет

x-xk <> dx

да




x=xk







y=x+sin(x)







Формирование Rez







вывод результатов




Конец


Лабораторная работа №5

"Программирование элементов управления VBA"


Цель работы : изучить средства VBAдля реализации элементов управления в приложениях


Теоретическое введение

Элементы управления служат для создания пользовательских интерфейсов, наличие которых является неотъемлемым требованием, предъявляемым к современному программному обеспечению. VBA располагает встроенным набором различных элементов управления, основные из которых перечислены в таблице 1.


Таблица 1

^ Элемент управления

Имя

Поле

TextBox

Надпись

Label

Кнопка

CommandButton

Список

ListBox

Поле со списком

ComboBox

Полоса прокрутки

ScrollBar

Счетчик

SpinButton

Переключатель

OptionButton

Флажок

CheckBox


В Microsoft Excel элементы управления могут быть расположены либо непосредственно на рабочем листе, либо на пользовательской форме.

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

Каждый элемент управления имеет свойства, например, цвет, размеры, название и др. Для установки свойств элемента управления в режиме конструирования необходимо выделить его и нажать кнопку Свойства на панели инструментов (указательный палец над листом бумаги).


Задание 1. На листе Excel создайте основные элементы управления из таблицы 1. Ознакомьтесь со свойствами каждого из них (используйте конспект лекций или разделы справочной системы, доступ к которым можно получить через кнопку F1). Установите новые значения свойств: Autosize, BackColor, Caption, Font, ForeColor, MousePointer, BorderStyle.


Кроме свойств с каждым объектом управления может быть связано одно или несколько событий, например, щелчок кнопкой мышки по элементу управления, ввод с клавиатуры значения и др. Для обработки событий пишутся программы - обработчики событий на языке VBA. Чтобы написать обработчик событий необходимо перейти в редактор VBA. Для этого требуется сделать двойной щелчок левой кнопкой мышки по элементу управления, либо нажать кнопку Исходный текст на панели инструментов (увеличительное стекло над листом бумаги).


Задание 2. Создайте на новом листе элементы управления Линейка прокрутки(ScrollBar1) и Поле(TextBox1). Установите свойства ScrollBar1.Min=1 и ScrollBar1.Max=10. Перейдите в редактор VBA (см. выше) и для события Изменение Линейки прокрутки(Change) подготовьте следующую процедуру:

sub ScrollBar1_Change()

TextBox1.Text=ScrollBar1.Value

end sub

Вернитесь на лист Excel, отключите режим конструктора (сделать щелчок мышкой по бирюзовому треугольнику с карандашом на панели инструментов). Изменяйте положение ползунка линейки прокрутки и наблюдайте за изменением значения в текстовом поле.


Рассмотрим более сложный пример.

Пусть требуется создать компьютерный вариант игры "Орел или Решка". Игрок вносит в "банк" определенную сумму денег. Игра состоит из последовательности шагов, которая, вообще говоря, может быть бесконечной. На очередном шаге игрок загадывает либо орел, либо решка. Компьютер "бросает монету". Если "монета падает той же стороной", которую загадал игрок, то банк увеличивается на единицу, в противном случае - уменьшается на единицу. Игра заканчивается либо по желанию игрока, либо когда величина банка становится нулем или больше 10000. Компьютер отслеживает максимальные и минимальные суммы, которые были в банке в течение игры.

Поскольку игра никак несвязанна с вычислениями или данными рабочего листа, то для ее реализации создадим диалоговое окно - пользовательскую форму. Как отмечалось выше, пользовательская форма также может служить для размещения элементов управления.

Для создания пользовательской формы:
  • перейдите в редактор VBA;
  • выберите команду Вставка - UserForm;
  • заполните появившуюся пользовательскую форму элементами согласно рис. 1.


Орел - Решка




Банк


Выбор


Бросить монету

Отмена


Орел


Партия

Игра№


Решка


Максимум


Минимум



Рис.1 Примерный вид пользовательской формы для игры "Орел - Решка"


Задание 3. Создайте пользовательскую форму для игры "Орел - Решка". Серые элементы на рис.1 обозначают кнопки, пустые прямоугольники - поля, тексты - надписи, кружки - переключатели, прямоугольник "Выбор" - рамку.


После того, как форма создана, требуется ввести программный код для элементов управления формы. Чтобы разобраться, какие процедуры следует написать, рассмотрим основные этапы игры.

Сначала игрок вызывает нашу программу. На этом этапе можно описать общие переменные, которые будут использованы в программе, а также присвоить некоторым из них начальные значения. Описание переменных выполняется в так называемой Общей области редактора кода VBA, а присвоение начальных значений свяжем с событием инициализация формы (Initiаlize).


Задание 4. Двойным щелчком левой кнопки мыши по форме перейдите в редактор кода (он откроется на процедуре UserForm_Click). Переместите курсор выше этой процедуры и введите с помощью операторов Dim описания следующих переменных:

^ Банк - сумма, которая хранится в банке игрока,

Партия - номер текущей партии,

НомерМаксимум - номер партии, в которой банк содержал максимальное количество денег,

НомерМинимум - номер партии, в которой банк содержал минимальное количество денег,

Максимум - максимальная сумма, которая находилась в банке,

Минимум - минимальная сумма, которая находилась в банке.

Тип всех переменных - длинное целое (Long).


^ Задание 5. Введите текст процедуры инициализации формы:


Private Sub UserForm_Initialize()

Максимум = 0 Эти операторы

Минимум = 10000 присваивают начальные значения

Партия = 0 переменным


TextBox1.Enabled = True Первый оператор разрешает

TextBox2.Enabled = False игроку внести сумму

TextBox3.Enabled = False в банк. Остальные - запрещают

TextBox4.Enabled = False ему изменять значения

TextBox5.Enabled = False остальных текстовых полей

TextBox6.Enabled = False


OptionButton1.Value = True Этот оператор устанавливает

начальный выбор игрока на Решке


End Sub


На следующем этапе игрок должен положить некоторую сумму денег в банк, т.е. заполнить поле "Банк", загадать Орел или Решка и нажать кнопку "Бросить монету". Все остальные действия в игре разворачиваются по событию CommandButton1_Click.


Задание 6. Ознакомиться с текстом процедуры нажатия кнопки "^ Бросить монету"(см.ниже), разобраться в назначении каждого оператора, ввести, дополнив недостающими фрагментами.


Private Sub CommandButton1_Click()

Партия = Партия + 1

TextBox1.Enabled = False Запрещает дальнейшие изменения банка

If IsNumeric(TextBox1.Text) = False Then Приглашает положить в банк некоторую

MsgBox "Введите ставку", vbExclamation сумму и проверяет, чтобы введенное значение

TextBox1.Enabled = True было число

TextBox1.SetFocus

Exit Sub

End If

Банк = CLng(TextBox1.Text)

If Банк > 10000 Or Банк <= 0 Then

MsgBox "Ставка должна быть в диапазоне от1 до 10000", vbExclamation

TextBox1.Enabled = True

TextBox1.SetFocus

Exit Sub

End If


Randomize Компьютер "бросает монету". Вспомните

Монета = Int(2 * Rnd) как работают функции INT и RND.




If OptionButton1.Value = True Then Компьютер знает, что игрок загадал ОРЕЛ,

If Монета = 0 Then и сравнивает с результатом своего хода.

Банк = Банк - 1 Если у компьютера тоже ОРЕЛ, то выиграл

TextBox1.Text = CStr(Банк) игрок, иначе выиграл компьютер

End If

If Монета = 1 Then

Банк = Банк + 1

TextBox1.Text = CStr(Банк)

End If

End If

ВНИМАНИЕ! Здесь должен быть фрагмент

аналогичный предыдущему, только для

ситуации, когда игрок загадал РЕШКА

TextBox1.Text = CStr(Партия)




If Банк > Максимум Then Отслеживается самая удачная и самая не-

Максимум = Банк удачная партия для игрока

НомерМаксимум = Партия

TextBox3.Text = CStr(Максимум)

TextBox5.Text = CStr(НомерМаксимум)

End If

If Банк < Максимум Then

Минимум = Банк

НомерМинимум = Партия

TextBox4.Text = CStr(Минимум)

TextBox6.Text = CStr(НомерМинимум)

End If

End Sub


Игра может продолжаться очень долго, поэтому, чтобы игрок мог остановить ее, введена кнопка CommandButton_2. Её нажатие должно приводить к останову игры. Для этого используется метод формы Hide.


Задание 7. Введите последнюю процедуру и попробуйте сыграть с компьютером.

Private Sub CommandButton2_Click()

UserForm1.Hide

End Sub

Для запуска программы используйте кнопку F5. После отладки программы предъявите результат преподавателю.


Задание 8. Дополните текст одной из процедур (какой?) операторами, останавливающими игру, если в банке у игрока 0 (т.е компьютер разорил его), или если в банке 10000 (т.е. игрок разорил компьютер).


^ Задание 9. Дополните свои программы, разработанные в ходе выполнения предыдущей работы(VBA2), следующими сервисными возможностями:

- автоматизируйте заполнение рабочего листа с анкетами клиентов, предоставляя им диалоговое окно (пользовательскую форму), в которой они могли бы выбрать один или несколько товаров из списка товаров на складе, указать предполагаемое количество к закупке, оставить свои адреса и телефоны;

- предусмотрите на листе с бланком заявки кнопку заполнения заявки.


Задание 10. Оформите отчет по работе.