- •1.Введение в программирование на vba Понятие объекта
- •Среда программирования
- •Типы данных
- •Переменные
- •Стандартные элементы управления. Объект Форма(UserForm) и элемент Кнопка(CommandButton)
- •Элемент Кнопка
- •Стандартные окна ввода и вывода сообщений
- •Окно сообщения
- •Окно ввода
- •Практические задания Задание 1.1
- •Задание 1.2
- •Задание 1.3
- •Задание 1.4
- •2.Реализация линейных алгоритмов Программирование арифметических выражений
- •Математические операции
- •Стандартные математические функции
- •Элементы Надпись(Label) и Поле(TextBox) Элемент Поле
- •Элемент Надпись
- •Практические задания Задание 2.1
- •Задание 2.2
- •Задание 2.3
- •3.Реализация алгоритмов с условиями Программирование условий Операторы сравнения
- •Логические операции
- •Инструкция If…Then…Else
- •Инструкция Select Case
- •Функции, используемые при программировании условий
- •Элементы Рисунок(Image), Счетчик и Полоса прокрутки(ScrollBar) Элемент Рисунок
- •Элемент Счетчик
- •Элемент Полоса прокрутки
- •Практические задания Задание 3.1
- •Задание 3.2
- •З адание 3.3
- •4.Реализация циклических алгоритмов Программирование циклов Цикл For…Next
- •Цикл Do While…Loop / Do…Loop While
- •Цикл Do Until...Loop / Do…Loop Until
- •Практические задания Задание 4.1
- •Задание 4.2
- •5.Использование процедур и функций в программах на vba Процедуры и функции
- •Элементы Рамка(Frame), Флажок(CheckBox), Переключатель(OptionButton), Выключатель(ToggleButton) Элемент Рамка
- •Элемент Флажок
- •Элемент Выключатель
- •Элемент Переключатель
- •Практические задания Задание 5.1
- •6.Использование структурированных типов данных на примере массивов Понятие массива. Работа с массивами
- •Практические задания Задание 6.1
- •Практические задания Задание 7.1
- •Задание 7.2
- •Задание 7.3
- •Задание 7.4
- •Задание 7.5
- •Задание 7.6
- •Задание 7.7
- •Задание 7.8
- •8.Работа с макросами в ms Excel Основные объекты ms Excel
- •Понятие макроса. Создание, редактирование, выполнение макросов
- •Цикл For Each
- •Инструкция With
- •Практические задания Задание 8.1
- •Задание 8.2
- •Задание 8.3
- •9.Создание приложений, управляемых с помощью диалоговых окон Элементы Поле со списком (ComboBox), Список (ListBox)
- •Практические задания Задание 9.1
- •Задание 9.2
- •10.Рекомендуемая литература
Цикл Do While…Loop / Do…Loop While
Циклы типа While предназначены для ситуаций, когда количество проходов заранее неизвестно, но известно условие завершения цикла. В обеих своих разновидностях цикл While работает до тех пор, пока Условие остается истинным. Как только Условие примет значение False, выполнение цикла заканчивается. Вот синтаксис двух разновидностей цикла While:
Do While Условие Инструкции Loop |
Do Инструкции Loop While Условие |
Отличие между ними заключается в том, что условие выхода проверяется в одном случае перед очередным проходом, а в другом случае – после прохода. Для досрочного выхода из цикла используется оператор Exit Do.
Цикл Do Until...Loop / Do…Loop Until
Цикл Until подобен циклу While с той лишь разницей, что тело цикла выполняется до тех пор, пока Условие в строке Until ложно. Как только Условие становится истинным, цикл завершается. Проверка условия может осуществляться как до очередного прохода, так и после него. Для досрочного выхода из цикла используется оператор Exit Do.
Do Until Условие Инструкции Loop |
Do Инструкции Loop Until Условие |
Практические задания Задание 4.1
С оздайте приведенную форму. Она демонстрирует, как можно организовать в программе ввод нескольких элементов. На форме размещены 2 элемента Надпись, 2 элемента Поле и 3 Кнопки. Введенные элементы помещаются в поле TextBox2. Для ввода используется функция InputBox.
Кнопка FOR предназначена для ввода элементов, когда их количество заранее известно. Оно указывается в поле TextBox1.
Кнопка DO…LOOP позволяет ввести заранее неизвестное количество элементов. В этом случае количество введенных элементов подсчитывается и выводится в поле TextBox1. После ввода каждого элемента пользователя спрашивают, хочет ли он закончить ввод. Для этого используется функция MsgBox.
Private Sub CommandButton1_Click()
TextBox2.Text = ""
For i = 1 To TextBox1.Text
X = InputBox("Введите элемент " & i)
TextBox2.Text = TextBox2.Text & " " & X
Next
End Sub
Private Sub CommandButton2_Click()
TextBox1.Text = ""
TextBox2.Text = ""
i = 0
Do
i = i + 1
TextBox1.Text = i
X = InputBox("Введите элемент " & i)
TextBox2.Text = TextBox2.Text & " " & X
Loop Until MsgBox("Закончить ввод?", vbYesNo + vbQuestion) = vbYes
End Sub
Задание 4.2
Создайте форму, которая приведена ниже. Цель данного задания – научиться программировать основные математические операции над группой чисел. Для каждой операции предусмотрена своя кнопка. Числа, над которыми выполняются операции, генерируются с помощью датчика случайных чисел. Для контроля они выводятся в поле TextBox2. Количество чисел можно задать в поле TextBox1. Результат выводится в поле TextBox3.
Ниже приведены тексты программ для вычисления суммы чисел и нахождения максимального числа. Программы для вычисления произведения и нахождения минимума напишите самостоятельно. Обратите внимание, что первое число при вычислении максимума генерируется не в цикле, так как нам его ещё не с чем сравнивать. Оно просто присваивается вспомогательной переменной Max, с которой потом будут сравниваться все остальные числа. Диапазон чисел задается в момент инициализации формы.
Dim A1 As Integer
Dim A2 As Integer
Private Sub CommandButton1_Click()
'Вычисление суммы
TextBox2.Text = ""
S = 0
For i = 1 To TextBox1.Text
X = Int((A2 - A1 + 1) * Rnd + A1)
TextBox2.Text = TextBox2.Text & " " & X
S = S + X
Next
TextBox3.Text = S
End Sub
Private Sub CommandButton3_Click()
'Вычисление максимума
Max = Int((A2 - A1 + 1) * Rnd + A1)
TextBox2.Text = Max
For i = 2 To TextBox1.Text
X = Int((A2 - A1 + 1) * Rnd + A1)
TextBox2.Text = TextBox2.Text & " " & X
If X > Max Then Max = X
Next
TextBox3.Text = Max
End Sub
Private Sub UserForm_Initialize()
A1 = -10
A2 = 10
Randomize
End Sub