Редактора Visual Basic Для записи текста программы необходимо создать модуль: Меню "Вставка" Модуль Модуль создается только один раз и в нем записываются все операторы Visual Basic. Любая программа
Вид материала | Программа |
- Урок Особенности среды " Microsoft Visual Basic", 184.03kb.
- Даний курс призначений для тих, хто: ніколи не програмував, але хоче навчитися, 360.9kb.
- Краткий курс по изучению языка программирования Visual Basic, 357.37kb.
- Запуск программы: Пуск Программы Visual Basic; для начала работы над новым проектом, 36.28kb.
- Язык Visual Basic имеет разнообразные средства визуализации разрабатываемых приложений., 41.17kb.
- Н. Г. Волчёнков программирование на visual basic 6 Учебное пособие, 128.99kb.
- Задачи: Изучить среду Visual Basic; Подобрать задачи исследовательского характера для, 635.44kb.
- Тема урока: Массивы в Visual Basic, 35.5kb.
- Visual Basic Основы работы с базами данных, 1336.88kb.
- Опис модуля назва модуля: Visual Basic для додатків. Код модуля, 40.19kb.
Схема алгоритма программы
Начало
Ввод 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. Оформите отчет по работе.