Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сидорова-004.С34.doc
Скачиваний:
91
Добавлен:
01.04.2025
Размер:
3.08 Mб
Скачать

7.5.1. Создание формы

В редакторе VBA командой меню Insert → UserForm добавим в проект новую форму с названием по умолчанию UserForm1. Далее разместим на форме

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

Рис. 16. Форма с элементами управления

Таблица 6

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

Элемент

Свойство

Значение

UserForm1

Caption

Угадай число!

Label1

Name

Приглашение

Caption

Введите число от 1 до 20

TextBox1

Name

Ввод_числа

CommandButton1

Name

Кн_Проверка

Caption

Проверка

CommandButton2

Name

Кн_Выход

Caption

Выход

Label2

Name

Результат

Caption

(пусто)

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

Рис. 17. Вид окна приложения «Угадай число»

7.5.2. Разработка программного кода

Окно Code, в котором записывается программный код формы, вызывается любым из следующих способов: нажатием клавиши F7, командой меню View → Code, двойным щелчком левой кнопки мыши в любом свободном месте формы. В верхней части окна редактора кода находятся два раскрывающихся списка. Слева находится список объектов, которые используются в приложении, список справа – это список процедур и событий. Первыми в этих списках стоят пункты General и Declarations, предназначенные соответственно для записи команд компилятора и объявления глобальных переменных, т. е. используемых («видимых») во всех процедурах данного приложения.

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

Определим переменные, используемые в программе для данного примера:

z – число, «задуманное» компьютером;

v – число, введенное игроком;

kp – количество попыток.

Все это целочисленные переменные типа Byte.

Результирующее сообщение будет храниться в строковой переменной otvet (тип – String).

Переменные z и kp будут использоваться во всех процедурах, поэтому их объявление выполним в разделе General. Здесь же укажем инструкцию Option Explicit.

Далее перейдем к написанию кода для объектов и событий. Первым рассмотрим объект UserForm (Форма). При выводе формы на экран компьютер должен «загадать» число. Событие, которое происходит при вызове формы, называется Activate (Активация), поэтому в раскрывающихся списках выберем объект UserForm и событие Activate. Редактором кода автоматически создается процедура:

Private Sub UserForm_Activate()

End Sub

В теле этой процедуры запишем следующие строки программного кода:

Randomize Timer

z = Fix(Rnd * 20 + 1)

kp = 0

Здесь командой Randomize инициализируется база генератора случайных чисел, с помощью которого затем переменной z присваивается случайное значение в диапазоне от 1 до 20. В третьей строке счетчику числа попыток kp присваивается нулевое начальное значение, поскольку попыток угадать число еще не было.

Следующее событие произойдет при нажатии на кнопку «Проверка». При этом программа должна сравнить введенное пользователем число с заданным ЭВМ, подсчитать количество попыток и вывести соответствующее сообщение. Для этого события в раскрывающихся списках выберем объект Кн_Проверка и событие Click (щелчок левой кнопкой мыши). В созданной редактором кода заготовке процедуры запишем программный код:

Private Sub Кн_Проверка_Click()

Dim v As Byte, otvet As String 'Объявление переменных

v = Val(Ввод_числа.Text) 'Чтение значения, введенного в текстовое поле

kp = kp + 1 'Увеличение счетчика попыток на единицу

Select Case v 'Анализ введенного числа

Case z 'Случай, если введенное число равно заданному

otvet = "Число угадано!"

Case Is < z

otvet = "Заданное число больше"

Case Is > z

otvet = "Заданное число меньше"

End Select

Результат.Caption = "Попытка " & kp & ": " & otvet

End Sub

Самая простая процедура выполняется при нажатии на кнопку «Выход» и записывается аналогично рис. 15. Полный листинг программного кода для решения задачи «Угадай число» приведен ниже.

Option Explicit

Dim z As Byte, kp As Byte

'----------------------------------------

Private Sub UserForm_Activate()

Randomize Timer

z = Fix(Rnd * 20 + 1)

kp = 0

End Sub

'----------------------------------------

Private Sub Кн_Проверка_Click()

Dim v As Byte, otvet As String

v = Val(Ввод_числа.Text)

kp = kp + 1

Select Case v

Case z

otvet = "Число угадано!"

Case Is < z

otvet = "Заданное число больше"

Case Is > z

otvet = "Заданное число меньше"

End Select

Результат.Caption = "Попытка " & kp & ": " & otvet

End Sub

'---------------------------------------

Private Sub Кн_Выход_Click()

End

End Sub

Запустите программу и проверьте ее работу.