Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 Курс Информатика VBA(ЗО) / Лабораторные работы / Лабораторный практикум VBA.doc
Скачиваний:
191
Добавлен:
31.05.2015
Размер:
813.57 Кб
Скачать

«Использование элементов управления»

Цель:Научиться использовать элементы управления в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. Создать диалоговое окно, имеющее поля ввода АргументиЗначение функциии кнопку ОКВ полеАргументвводится число, нажимается кнопкаОК, и в поле вводаЗначение функцииотобразится найденное значение функции. Тип функции выбирается при помощи переключателя. Функцию взять из лабораторной работы №1.

  2. Создать диалоговое окно с тремя полями ввода: Начальное значение, Конечное значение, Шаг, Счетчиком и двумя кнопками ОКиРабочий лист. При нажатии кнопкиОКпроисходит расчет значений функции от начального значения до конечного. Результат выводится в диалоговое окно. При нажатии кнопкиРабочий листрезультат выводится на рабочий лист. Номер листа устанавливается счетчиком. При разработке программы предусмотреть проверку согласованности начального и конечного значений.