- •Е. А. Сидорова, п. С. Челобанов основы программирования на vba омск 2011
- •1. Понятие и свойства алгоритма
- •1.1. Понятие алгоритма
- •1.2. Свойства и виды алгоритмов
- •1.3. Способы представления алгоритмов
- •2. Язык программирования vba
- •2.1. Языки программирования
- •2.2. Общие сведения о vba
- •2.3. Основные понятия языка программирования
- •2.4. Алфавит vba
- •2.5. Типы данных
- •2.6. Формы записи вещественных чисел в программе
- •2.7. Переменные
- •2.8. Константы
- •2.9. Встроенные функции
- •2.10. Выражения
- •2.11. Редактор Visual Basic
- •2.12. Правила записи и ввода программ на vba
- •2.13. Создание первой программы
- •3. Управление вводом и выводом данных
- •3.1. Оператор присваивания
- •3.2. Операторы ввода данных
- •3.3. Генерирование случайных чисел
- •3.4. Операторы вывода данных
- •4. Линейные вычислительные процессы
- •5. Разветвляющиеся вычислительные процессы
- •5.1. Алгоритм разветвляющегося процесса
- •5.2. Оператор условного перехода If
- •5.2.1. Однострочный (линейный) оператор If
- •If Условие Then Операторы_1 [ Else Операторы_2 ],
- •5.2.2. Блочная форма оператора If
- •5.3. Объединение условий с помощью логических операций
- •5.4. Оператор безусловного перехода GoTo
- •5.5. Оператор выбора Select Case
- •6. Символьные переменные
- •6.1. Общие понятия
- •6.2. Сравнение строк
- •6.3. Строковые функции
- •6.4. Оператор Mid
- •7. Введение в объектно-ориентированное программирование
- •7.1. Основные понятия
- •7.2. Создание пользовательского интерфейса
- •7.3. Установка свойств объектов и определение методов
- •7.4. Составление программного кода
- •7.5. Создание пользовательского приложения с использованием формы
- •7.5.1. Создание формы
- •7.5.2. Разработка программного кода
- •8. Циклические вычислительные процессы
- •8.1. Понятие цикла
- •8.2. Арифметический цикл
- •8.2.1. Цикл с разветвлением
- •8.2.2. Цикл со счетчиком. Вычисление максимума и минимума
- •8.2.3. Вложенные циклы
- •8.3. Вычисление сумм и произведений
- •8.4. Итерационные циклы
- •8.4.1. Операторы цикла Do … Loop
- •9. Модульное программирование.
- •9.1. Понятие процедуры
- •9.2. Параметры процедур – формальные и фактические
- •9.3. Разработка процедур-функций
- •9.4. Разработка процедур-подпрограмм
- •9.5. Срочный выход из процедур и циклов
- •10. Переменные с индексами. Одномерные массивы
- •10.1. Понятие массива
- •10.2. Ввод массива
- •10.2.1. Считывание массива с листа Excel
- •10.2.2. Заполнение массива случайными числами
- •10.3. Вывод массива
- •10.4. Решение задач с использованием массивов
- •644046, Г. Омск, пр. Маркса, 35
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
Запустите программу и проверьте ее работу.
