- •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.Рекомендуемая литература
Элемент Флажок
Элемент Флажок (CheckBox) дает возможность пользователю осуществить выбор типа Да/Нет. Можно создать группу элементов, однако все флажки в этой группе будут независимы друг от друга.
Основное свойства Флажка – Value. Оно равно True, если флажок установлен, и False, если флажок не установлен. Свойство Caption содержит надпись, которая выводится рядом с элементом.
Основное событие для этого элемента – Click. Оно возникает при изменении свойства Value.
Элемент Выключатель
Элемент Выключатель (ToggleButton) предназначен для тех же целей, что и Флажок. Они отличаются только внешним видом. Выключатель имеет вид кнопки, которая может находиться в двух состояниях: отпущена или утоплена. На поверхности выключателя можно поместить рисунок. Для этого используется свойство Picture.
Элемент Переключатель
Переключатели (элементы OptionButton) обычно объединяются в группу. Они предназначены для выбора одного из нескольких взаимоисключающих значений. При выборе пользователем нужного элемента остальные элементы в группе автоматически устанавливаются в состояние «не выбран».
Для объединения переключателей в группу используются элементы–контейнеры, например, Рамка. Если группа одна, то контейнером может служить форма.
Основное свойства Переключателя – Value. Оно равно True, если позиция выбрана (помечена точкой), и False, если позиция не выбрана.
Основное событие элемента Переключатель – Click. Оно возникает при изменении значения свойства Value. В группе переключателей событие возникает только для того элемента, чье значение становится True.
Практические задания Задание 5.1
Создайте приведенную форму. Для выбора операции используется группа переключателей, которая помещена в рамку. Операции выполняются для чисел, удовлетворяющих условиям. Для указания условий используется группа флажков. Все отмеченные условия должны выполняться для элемента одновременно. Выключатель «Условия» определяет, нужно ли проверять условия. Если он включен, то флажки для задания условий видны, и условия проверяются, в противном случае – флажки не видны, и условия не проверяются. В этом случае операции выполняются для всех элементов.
Операции выполняются для чисел, сгенерированных случайным образом. Они выводятся на форме. Количество чисел можно менять. Диапазон чисел (от –10 до 10) задается в момент инициализации формы. Результат операции выводится в поле «Результат». Если ни одно из чисел не удовлетворяет условиям, то выводится «нет эл.».
Проверка условия нам необходима во многих местах, поэтому она оформлена в виде функции. Функция возвращает значение True, если условие выполняется, и False – в противном случае. Если выключатель не нажат, то функция всегда возвращает значение True. Функция помещается в тот же модуль формы.
Public Function условие(X As Variant) As Boolean
If ToggleButton1.Value Then
условие = (Not (CheckBox1.Value) Or (X < 0)) And _
(Not (CheckBox2.Value) Or (X > 0)) And _
(Not (CheckBox3.Value) Or ((X >= -5) And (X <= 5))) And _
(Not (CheckBox4.Value) Or ((X Mod 2) = 0)) And _
(Not (CheckBox5.Value) Or ((X Mod 2) <> 0))
Else
условие = True
End If
End Function
Чтобы сделать в нужный момент флажки видимыми или невидимыми, обрабатывается событие Click для выключателя. Значение свойства Visible у флажков совпадает со значением свойства Value у выключателя: если выключатель нажат, то флажки видны, и наоборот. В момент проектирования их также следует установить одинаковыми. Private Sub ToggleButton1_Click()
CheckBox1.Visible = ToggleButton1.Value
CheckBox2.Visible = ToggleButton1.Value
CheckBox3.Visible = ToggleButton1.Value
CheckBox4.Visible = ToggleButton1.Value
CheckBox5.Visible = ToggleButton1.Value
End Sub
Процедура ОчередноеЗначение() предназначена для получения очередного случайного числа. Сгенерированное число присваивается аргументу, указанному при вызове процедуры, и записывается в строку, которая выводится в поле TextBox2. Процедуру нужно поместить в том же модуле формы.
Public Sub ОчередноеЗначение(Y As Integer)
Y = Int((A2 - A1 + 1) * Rnd + A1)
TextBox2.Text = TextBox2.Text & " " & Y
End Sub
Основные вычисления запрограммированы в процедуре обработки события Click для кнопки «Вычислить». Проверка, какой из переключателей выбран, выполняется с помощью условного оператора IF. Допишите в приведенной процедуре недостающие фрагменты. Обратите внимание, как выполняется начальное присваивание при нахождении номера максимального элемента. Для этого потребовалось написать дополнительный цикл, чтобы найти первый элемент, удовлетворяющий условию. Переменная R содержит результат. Во всех случаях, кроме последнего (подсчет среднего арифметического), её значение определяется с помощью функции IIf. В последнем случае это невозможно, т.к. у функции IIf всегда вычисляются все аргументы, и, следовательно, возникнет ошибка в том случае, когда C = 0.
Private Sub CommandButton1_Click()
Dim X As Integer
TextBox2.Text = ""
'Вычисление количества элементов
If OptionButton1.Value Then
C = 0
For i = 1 To TextBox1.Text
ОчередноеЗначение X
If условие(X) Then C = C + 1
Next
R = IIf(C = 0, "нет эл.", C)
'Вычисление номера первого элемента
ElseIf OptionButton2.Value Then
N = 0
P = True
For i = 1 To TextBox1.Text
ОчередноеЗначение X
If (условие(X) And P) Then N = i: P = False
Next
R = IIf(N = 0, "нет эл.", N)
'Вычисление номера последнего элемента
'…
'Вычисление номера максимального элемента
ElseIf OptionButton4.Value Then
N = 0
For i = 1 To TextBox1.Text
ОчередноеЗначение X
If условие(X) Then Max = X: N = i: Exit For
Next
For j = i + 1 To TextBox1.Text
ОчередноеЗначение X
If (условие(X) And X > Max) Then Max = X: N = j
Next
R = IIf(N = 0, "нет эл.", N)
'Вычисление номера минимального элемента
'…
'Вычисление среднего арифметического
ElseIf OptionButton6.Value Then
C = 0
S = 0
For i = 1 To TextBox1.Text
ОчередноеЗначение X
If условие(X) Then C = C + 1: S = S + X
Next
If C = 0 Then R = "нет эл." Else R = Format(S / C, "fixed")
End If
TextBox3.Text = R
End Sub