
- •«Программирование линейных алгоритмов на языке vba»
- •Краткие теоретические сведения
- •Ход работы:
- •Варианты заданий:
- •Организация ввода-вывода информации.
- •Краткие теоретические сведения
- •Ход работы
- •2. Выполните задачи для самостоятельного решения
- •«Программирование разветвляющихся алгоритмов на языке vba»
- •Краткие теоретические сведения
- •Ход работы
- •Задания для выполнения лабораторной работы:
- •«Программирование циклических алгоритмов на языке vba»
- •Краткие теоретические сведения
- •Инструкция For...Next
- •Инструкция While...Wend
- •Инструкция Do...Loop
- •Инструкция For Each...Next
- •Ход работы:
- •Задания:
- •«Программирование алгоритмов с массивами на языке vba»
- •Ход работы:
- •«Программирование функций обработки строк на языке vba»
- •Краткие теоретические сведения:
- •Задания для выполнения лабораторной работы
- •«Изучение объектной модели excel»
- •Краткие теоретические сведения:
- •Объект Workbook.
- •Объект Worksheet.
- •Ход выполнения работы:
- •«Обработка событий»
- •Краткие теоретические сведения:
- •Использование процедур событий
- •Реагирование на изменения в рабочем листе
- •События Change и SheetChange
- •Ход выполнения работы:
- •«Создание пользовательской формы»
- •Краткие теоретические сведения
- •«Использование элементов управления»
- •Краткие теоретические сведения:
«Использование элементов управления»
Цель:Научиться использовать элементы управления вEXCEL.
Краткие теоретические сведения:
В VBAимеется большое количество элементов управления. Используя этот набор можно легко создавать интерактивные документы с пользовательским интерфейсом.
Элементы управления создаются при помощи специальной панели инструментов Вид - Панели инструментов - Элементы управления.Для того что бы внедрить элемент управления необходимо кликнуть мышью по элементу на панели, а затем на рабочем листе растянуть прямоугольник соответствующий геометрическим размерам будущего элемента.
Для того, чтобы добавить код VBAдля элемента необходимо павой кнопкой кликнуть по элементу и выбрать из контекстного меню пунктИсходный текст.
Рассмотрим использование наиболее часто встречающихся элементов управления.
Элемент Переключатель
В качестве примера рассмотрим использование переключателя для выбора математической операции, производимой над двумя числами. При помощи переключателя мы будем производить умножение или деление двух чисел.
Создадим форму, на которой разместим три поля, переключатель и кнопку ОК.
Рисунок 6 - Заготовка формы.
Для объединения переключателей в один блок используем элемент Рамка. После того как выполнен дизайн формы, можно переходить к написанию программного кода, который нужно начать с установки требуемых свойств элементов:
Таблица 22 Свойства проектируемой формы
Элемент управления |
Свойство |
Значение |
Примечание |
Поле ввода |
Name |
txtItem1 |
Первое число |
Поле ввода |
Name |
txtItem2 |
Второе число |
Поле ввода |
Name |
txtResult |
Результат |
Кнопка |
Name |
cmdOK |
|
|
Caption |
OK |
|
Рамка |
Caption |
Операция |
|
Переключатель |
Name |
optAdd |
|
|
Caption |
Сложение |
|
Переключатель |
Name |
optMult |
|
|
Caption |
Произведение |
|
Правой кнопкой, кликнув по форме, выбираем из контекстного меню пункт ViewCode. Набираем следующий текст:
Private Sub UserForm_Activate()
optAdd.Value = True
txtResult.Enabled = False
End Sub
Private Sub cmdOK_Click()
Dim a As Double, b As Double
a = CDbl(txtItem1.Text) 'Преобразование текстового значения поля ввода к типу Double
b = CDbl(txtItem2.Text)
If optAdd.Value Then txtResult.Text = a + b ' Если установлен переключатель Сложение
If optMult.Value Then txtResult.Text = a * b ' Если установлен переключатель Умножение
End Sub
Private Sub optMult_Click()
Caption = " Сложение "
End Sub
Private Sub optAdd_Click()
Caption = " Умножение "
End Sub
Элементы Флажок и Выключатель
Элемент Флажок предоставляет пользователю возможность выбора. Он имеет два состояния – установлен и сброшен. Если флажок установлен, то свойство Value=TrueиначеFalse. Выключатель выполняет те же функции, что и флажок, но визуально выглядит как кнопка.
Создадим форму, которая помогает рассчитывать стоимость телефонных разговоров по мобильной сети с учетом налога на услугу и налога на добавленную стоимость. Налог на услугу будет учитываться при установленном флажке, а НДС при включенном выключателе.
Создадим форму следующего вида:
Рисунок 7 - Форма для расчета стоимости переговоров
Зададим основные свойства элементов управления.
Таблица 23 - основные свойства элементов управления
Элемент управления |
Свойство |
Значение |
Форма |
Caption |
Стоимость переговоров |
Поле ввода |
Name |
txtPrice |
Поле ввода |
Name |
txtMin |
Поле ввода |
Name |
txtResult |
Кнопка |
Name |
cmdOK |
|
Caption |
OK |
Флажок |
Name |
chkNalog |
|
Caption |
С учетом налогов |
Выключатель |
Name |
chkNDS |
|
Caption |
С учетом НДС |
Наберем в модуле формы следующий программный код:
Private Sub UserForm_Initialize()
chkNalog.Value = False 'Флажок "С учетом налога на услуги" отключен
chkNDS.Value = False 'Выключатель "С учетом НДС" отключен
txtResult.Enabled = False 'Доступ к полю "Стоимость услуг" закрыт
End Sub
Private Sub cmdOK_Click()
Dim dPrice, dMin, dResult As Double
Dim Nu, NDS As Double ‘Nu- налог на услуги,NDS– налог на добавленную стоимость
dPrice = CDbl(txtPrice.Text)
dMin = CDbl(txtMin.Text)
If chkNalog.Value Then
Nu = 0.05
Else
Nu = 0
End If
If chkNDS.Value Then
NDS = 0.18
Else
NDS = 0
End If
dResult = dPrice * dMin * (1 + Nu + NDS)
txtResult.Value = Str(Format(dResult, "Fixed"))
End Sub
Элементы Полоса прокруткиисчетчик
Данные элементы применяются для задания числового значения, причем эти элементы могут устанавливать только целые неотрицательные значения.
Полоса прокрутки обладает следующими свойствами, приведенными в таблице 24.
Таблица 24- Свойства полосы прокрутки
Свойство |
Описание |
Value |
Возвращает или устанавливает текущее значение ползунка на полосе прокрутки |
Min |
Минимальное значение полосы прокрутки |
Max |
Максимальное значение полосы прокрутки |
SmallChange |
Устанавливает шаг изменения значений при щелчке по одной из стрелок полосы прокрутки |
LargeChange |
Устанавливает шаг изменения значений при щелчке между ползунком и стрелкой полосы прокрутки |
Счетчик имеет практически те же свойства.
Создадим форму позволяющую рассчитывать стоимость товара по его цене и количеству, с учетом налога на добавленную стоимость. Количество товара будем изменять при помощи полосы прокрутки, а налог пи помощи счетчика.
Создадим заготовку подобную изображенной на рисунке 8.
Рисунок 8 - Форма со счетчиком и полосой прокрутки
Зададим свойства элементам управления.
Таблица 25 - Свойства элементов управления
Элемент управления |
Свойство |
Значение |
Форма |
Caption |
Стоимость товаров |
Поле ввода |
Name |
txtPrice |
Поле ввода |
Name |
txtKol |
Поле ввода |
Name |
txtNalog |
Кнопка |
Name |
cmdOK |
|
Caption |
OK |
Полоса прокрутки |
Name |
srlKol |
Счетчик |
Name |
spnNalog |
Наберем следующий программный код:
Private Sub cmdOK_Click()
Dim dResult As Double, dNalog As Double
Dim dKol As Double, dPrice As Double
dKol = CDbl(txtKol.Text)
dNalog = CDbl(txtNalog.Text)
dPrice = CDbl(txtPrice.Text)
dResult = dKol * dPrice * (1 + dNalog / 100)
txtResult.Text = CStr(Format(dResult, "Fixed")) + " ðóá."
End Sub
Private Sub spnNalog_Change()
txtNalog.Text = CStr(spnNalog.Value)
End Sub
Private Sub txtNalog_Change()
If Not IsNumeric(txtNalog.Text) Then Exit Sub
spnNalog.Value = CInt(txtNalog.Text)
End Sub
Private Sub srlKol_Change()
txtKol.Text = CStr(srlKol.Value)
End Sub
Private Sub txtKol_Change()
If Not IsNumeric(txtKol.Text) Then Exit Sub
srlKol.Value = CInt(txtKol.Text)
End Sub
В этом программном коде есть особенность. Последними четырьмя процедурами выполняется синхронизация работы текстовой строки ввода и соответствующего ей элемента управления. Работают эти процедуры следующим образом.
При изменении текстовой строки установленное значение преобразуется в целочисленный тип и передается как значение счетчика или полосы прокрутки, а любое изменение счетчика или полосы прокрутки автоматически преобразуется в строковый тип данных и передается в текстовую строку.
Выполните следующие задания самостоятельно:
Создать диалоговое окно, имеющее поля ввода АргументиЗначение функциии кнопку ОКВ полеАргументвводится число, нажимается кнопкаОК, и в поле вводаЗначение функцииотобразится найденное значение функции. Тип функции выбирается при помощи переключателя. Функцию взять из лабораторной работы №1.
Создать диалоговое окно с тремя полями ввода: Начальное значение, Конечное значение, Шаг, Счетчиком и двумя кнопками ОКиРабочий лист. При нажатии кнопкиОКпроисходит расчет значений функции от начального значения до конечного. Результат выводится в диалоговое окно. При нажатии кнопкиРабочий листрезультат выводится на рабочий лист. Номер листа устанавливается счетчиком. При разработке программы предусмотреть проверку согласованности начального и конечного значений.