Тема. Основы программирования VBA
-
Элементы управления Label, TextBox, CommandButton, Timer
-
Функции Randomize, Rnd(), ABS()
-
Диаологовые окна – InputBox
-
Конструкция ветвления – If … Then …Else
З адание 1 Сравнить по абсолютной величине два случайных числа из интервала [a,b] и большее число отобразить красным (или другим) цветом. Для выполнения задания оформить интерфейс на форме (Рис.1).
Рис.1 Интерфейс формы для выполнения задания
Алгоритм действий
-
Для информационного текста использовать свойство Caption элемента управления — подпись (Label)
-
Для обработки действий (п.2 - п.8) использовать событие Click для командной кнопки с заголовком Пуск (процедура Private Sub Command1_Click() … End Sub).
-
Д ля ввода границ интервала [a,b] использовать функцию InputBox — ввод данных типа String (рис.2), преобразовав тип вводимых переменных a и b в числовой тип с помощью функции Val.
Рис.2 Диалоговое окно InpuBox с полем ввода
-
Для обеспечения истинной случайности чисел X и Y использовать инструкцию рандомизации
Randomize z, где в качестве аргумента z (произвольное число) использовать встроенный счетчик времени — функцию Timer, а именно — Randomize Timer. Чтобы эта инструкция работала, нужно разместить элемент управления Timer на форме.
-
Для вычисления случайных чисел использовать оператор присвоения "=" переменным X и Y выражения (b-a)*Rnd + a
-
Отобразить случайные числа с помощью текстовых полей Поле (TextBox) (рис.1), т.е. присвоить свойству Text текстовыx полей значения переменных X и Y, преобразовав их тип в String (строковый ).
-
Сравнить абсолютные значения чисел используя:
-
функцию ABS(number)—вычисляет абсолютное значение аргумента number, в данном случае -аргументы — это числа X и Y
-
оператор сравнения ">"
-
конструкцию ветвления
If условие Then
Блок операторов 1
Else
Блок операторов 2
End If
-
Для числа большего по абсолютной величине изменить цвет шрифта на красный, присвоив в коде процедуры свойство ForeColor текстового поля значение цвета. Системное значение кода любого цвета можно определить в палитре свойства ForeColor, например, код красного цвета в16 - ричной системе счисления — &H000000FF&.
-
Вывести информационный текст под текстовыми полями.
-
Для кнопки с заголовком Выход создать процедуру завершения приложения.
Теоретический материал
К пункт 3
Функция InputBox отображает модальное окно диалога, в котором содержится просьба о вводе пользователем некоторых данных. Пока не завершится диалог с модальным окном, переключиться в другое диалоговое окно невозможно.
Упрощенный вариант синтаксиса функции следующий:
InputBox(Приглашение [,Заголовок] [,НачЗначение])
Приглашение — строковое выражение, отображаемое как сообщение в диалоговом окне, которое служит подсказкой пользователю;
Заголовок — Строковое выражение, отображаемое в строке заголовка диалогового окна. По умолчанию в строку заголовка выводится имя приложения;
НачЗначение — по умолчанию поле ввода изображается пустым, но пользователь может отобразить любую строку.
Следующий код отображает окно ввода, показанное на рис. ниже
Private Sub Command1_Click()
X = InputBox("Введите Ваше имя")
End Sub
Переменной X будет присвоено
Значение Екатерина, введенное пользователем.
К пунктам 4, 5
Функция — Rnd (number)
Возвращает очередное значение псевдослучайной последовательности — число в диапазоне от 0 до 1 с типом данных Single (вещественное число одинарной точности). Аргумент number — любое числовое выражение. Можно вызвать функцию без аргумента, т.е. Rnd() или Rnd.
Здесь надо иметь ввиду, что функция Rnd имитирует случайную величину, распределенную равномерно на отрезке [0,1], причем с необходимой погрешностью, обусловленной конечной разрядной сетки компьютера.
Если требуется получить значения псевдослучайных чисел в интервале, отличном от интервала [0,1], скажем в интервале [a,b], достаточно использовать выражение (b-a)*Rnd + a, т.е. написать оператор присвоения Х =(b-a)*Rnd + a
Однако функция Rnd при каждом запуске приложения всегда генерирует одну и ту же последовательность чисел, вне зависимости от необязательного аргумента, если только он не отрицателен.
Вместе с функцией Rnd можно использовать инструкцию Randomize (number), которая инициализи-рует генератор случайных чисел. Здесь number типа Variant любого числового субтипа.
Если аргумент number в инструкции Randomize отсутствует, в качестве "затравки" для генератора псевдослучайных чисел, используется значение системного таймера, инструкция при этом имеет следующий синтаксис.
Randomize Timer
К пункту 7
Для программной установки значения свойства объекту применяется следующий синтаксис
Объект.Свойство = значение свойства
Примеры операторов устанавливающих значения свойств объекту Text1
Text1.Visible = True 'Отображает текстовое поле
Text1.Text = "Привет" ' Отображает 'Привет' в тестовом поле
Выполнение задания
-
Оформить интерфейс формы по образцу (рис.1) – 4 элемента Label, два элемента TextBox и две командные кнопки CommandButton .
-
Добавьте на форму элемент управления Timer
-
Задайте необходимые свойства элементам управления – цвет, шрифт
-
Напишите код программы
-
Проверьте работоспособность программы
Код программы
Private Sub Command1_Click() ‘процедура для кнопки Пуск
Randomize Timer
Text1.ForeColor = &H0&
Text2.ForeColor = &H0&
a = Val(InputBox("введите a - левую границу интервала", "Сравнение чисел"))
b = Val(InputBox("введите b - правую границу интервала"))
x = a + Rnd() * (b - a)
y = a + Rnd() * (b - a)
Text1.Text = Str(x):
Text2.Text = Str(y)
If Abs(x) > Abs(y) Then
Text1.ForeColor = &HFF&
Label4.Caption = "абсолютная величина X > абсолютной величины Y"
Else
Text2.ForeColor = &HFF&
Label4.Caption = "абсолютная величина Y > абсолютной величины X"
End If
End Sub
Private Sub Command2_Click() ‘ процедура для кнопки Выход
End
End Sub