Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по информатике.doc
Скачиваний:
88
Добавлен:
18.02.2016
Размер:
6.29 Mб
Скачать

Задания Упражнение 1. Создание процедуры выхода из формы.

  1. Откройте сохраненный проект Лабораторная работа №2.

  2. Задайте кнопке «Выход»команду закрыть. Для этого необходимо перейти к окну кода следующим образом: дважды щелкнув по кнопке«Выход», при этом откроется окно кода.

  3. Внутрь процедуры впишите слово End.

Private Sub CommandButton1_Click()

End

End Sub

Слева в первой строке указывается имя объекта, с которым мы работаем, слева – действие, применяемое к данному объекту. В нижней области окна набрана программа, выполняющая заданную команду. В данном случае – команда End(закрыть).

4. Запустите проект и проверьте его на выполнение. Для этого необходимо выполнить одно из следующих действий:

  • на панели инструментов нажать на кнопку (запуск проекта);

  • используя строку меню, выполнить команду: Запуск/Запуск макроса (Run/Run macro);

  • использую функциональную клавишу F5.

Упражнение 2. Создание процедуры, выполняющей следующее: данные, введенные в текстовое поле должны отобразиться в надписи. Событие присвойте кнопке «Замена».

1. На имеющейся форме создайте командную кнопку «Замена».

2. Для открытия окна кода дважды щелкните по кнопке.

3. Запишите процедуру:

Private Sub CommandButton2_Click()

Label1.Caption = TextBox1.Text ' присвоение заголовку Надписи (Label) текста, введенного в Текстовое поле(TextBox)

TextBox1.Text = " " 'очистить текстовое поле

End Sub

Контрольные вопросы:

  1. Что такое процедура? Как записывается процедура?

  2. Что такое функция?

  3. В чем отличие процедуры от функции?

  4. Основные типы переменной.

  5. Что такое константа?

  6. Как изменить цвет объекта?

  7. Как отформатировать надпись?

  8. Как запустить VBA?

  9. Назовите элементы окна VBA?

  10. Перечислите элементы управления.

  11. Как заполнить список?

  12. Как создать на экранной форме объект элемента управления?

Основы визуального программирования Лабораторная работа № 8 Объектно-ориентированное программирование.

Цель: ознакомить с разработкой пользовательских приложений.

Основные понятия

Большинство приложений, созданных в VBA в Excel, работают в интерактивном режиме. На экран выводится информация, предназначенная для пользователя программы, и ожидается его ответная реакция в виде ввода данных или команд. Интерактивное приложение в VBA создается на базе формы, являющейся, как правило, основным окном интерфейса, с элементами управления, позволяющими осуществлять взаимодействие с пользователями.

В VBA при создании форм разработчик использует конструктор форм. Конструктор форм предназначен для самостоятельной разработки формы с заданными свойствами.

Задания

Упражнение 1. . Создание простой формы для вывода справочной информации.

  1. Запустите редактор VBA.

2. Разработайте пользовательскую форму для определения видов контроля по дисциплинам «Информатика», «Математика» и «Экономтеория», как показано на рисунке 41.

Рисунок 41. Законченный вид формы

3. Для того чтобы написать процедуру обработки события нажатия кнопки «Информатика», дважды щелкните по ней. Активизируется модуль UserForm1, в котором введите процедуру: Private Sub CommandButton1_Click()

TextBox1.Text="Экзамен. Компьютерное тестирование"

End Sub

4. Для обработки событий нажатий кнопок «Математика» и «Экономтеория» в модуле UserForm1 введите следующие две процедуры:

Private Sub CommandButton2_Click()

TextBox1.Text="Экзамен. Собеседование"

End Sub

Private Sub CommandButton3_Click()

TextBox1.Text="Зачет. Тестирование"

End Sub

5. Запустите проект и проверьте его на выполнение. При нажатии кнопки с выбранной дисциплиной в текстовом поле отобразится сведения о форме контроля.

Упражнение 2. Создание простой формы для нахождения процента от введенного числа.

1. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 42.

Рисунок 42. Пользовательская форма на вычисление процентов

2. Для кнопки «Рассчитать» запишите следующий программный код:

Private Sub CommandButton1_Click()

Dim Result As Double

Result = 0.01 * TextBox2 * TextBox1

TextBox3.Text = Result

End Sub

3. Для кнопки «Очистить» запишите следующий программный код

Private Sub CommandButton2_Click()

TextBox1 = " "

TextBox2 = " "

TextBox3 = " "

End Sub

4. Запустите проект и проверьте его на выполнение.

Упражнение 3. Создание сложной формы для вычисления выбранного арифметического действия к выделенным числам.

1. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 43, где для изображения:

  • чисел используется элемент Список (ListBox);

  • Вычислить, Отмена – элемент Кнопка (CommandButton);

  • Операция – элемент Рамка (Frame);

  • Сумма, Произведение, Среднее - элемент Переключатель (OptionButton);

  • Результат - элемент Надпись (Label );

  • для отображения вычисляемого значения – элемент TextBox (Текстовое поле).

2. На кнопку «Вычислить» введите следующую программу:

Private Sub CommandButton1_Click()

Dim i As Integer

Dim n As Integer

Dim Сумма As Double

Dim Произведение As Double

Dim Среднее As Double

Dim Результат As Double

If OptionButton1.Value = True Then

Сумма = 0

With ListBox1

For i = 0 To .ListCount - 1

If .Selected(i) = True Then

Сумма = Сумма + .List(i)

End If

Next i

End With

Результат = Сумма

End If

If OptionButton2.Value = True Then

Произведение = 1

With ListBox1

For i = 0 To .ListCount - 1

If .Selected(i) = True Then

Произведение = Произведение * .List(i)

End If

Next i

End With

Результат = Произведение

End If

If OptionButton3.Value = True Then

Среднее = 0

n = 0

With ListBox1

For i = 0 To .ListCount - 1

If .Selected(i) = True Then

n = n + 1

Среднее = Среднее + .List(i)

End If

Next i

End With

Результат = Среднее / n

End If

TextBox1.Text = CStr(Format(Результат, "Fixed"))

End Sub

3. Для кнопки «Отмена» напишите следующую процедуру:

Private Sub CommandButton2_Click()

UserForm1.Hide

End Sub

4. Для инициализации формы введите следующую процедуру:

Private Sub UserForm_Initialize()

With ListBox1

.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 10)

.ListIndex = 0

.MultiSelect = fmMultiSelectMulti

End With

TextBox1.Enabled = False

End Sub

5. Запустите проект на выполнение. При этом в группе Операция следует установить один из переключателей: Сумма, Произведение или Среднее, чтобы указать, какая операция будет выполняться над выбранными числами. Нажатие кнопки «Вычислить» должно привести к выполнению операции и выводу результата в поле Результат.

Упражнение 4. Разработка приложения, которое будет содержать пользовательскую форму для ввода названия организации и выбора её типа и вывода данных на рабочий лист, показанную на рисунке 44.

Рисунок 44. Пользовательская форма

1. Откройте рабочую книгу и нажмите комбинацию клавиш <Alt+F11> для запуска VBA;

2. Выберите вкладку Insert – UserForm, чтобы запустить пустое диалоговое окно;

3. Свойства Caption объекта UserForm будет иметь значение по умолчанию – UserForm1. Воспользуйтесь окном Свойств (Properties) для того, чтобы изменить значение свойства Caption на “Вывод названия организации” (если окно Свойств (Properties) не отображается на экране, нажмите клавишу <F4>);

4. Создайте форму пользователя и разместите на ней элементы управления, как показано на рис. 6.4;

Дважды щелкните по кнопке «Отмена» и введите следующую процедуру:

Private Sub CommandButton1_Click()начало процедуры

Unload UserForm1 ‘закрытие формы

End Sub ‘конец процедуры

5. Данная процедура выполняется после щелчка пользователем по кнопке «Отмена». Она вызывает выгрузку формы UserForm из памяти;

6. Нажмите комбинацию клавиш <Shift+F7>, чтобы повторно отобразить объект UserForm1;

7. Дважды щелкните по кнопке «Ok» и введите следующую процедуру:

Private Sub CommandButton1_Click() начало процедуры

Sheets("Лист1").Activate ‘активизация рабочего листа

(связь с рабочим листом)

NextRow = _

Application.WorksheetFunction.CountA(Range("A:A")) + 1 ‘определение пустой строки в рабочем листе, здесь Count (функция СЧЕТ), Range("A:A")) + 1 - выделяет диапазон ячеек, начиная с ячейки А1 с шагом +1

Cells(NextRow, 1) = TextBox1.Text передача имени

If OptionButton1 Then Cells(NextRow, 2) = "Фирма"

If OptionButton2 Then Cells(NextRow, 2) = "Корпорация"

If OptionButton3 Then Cells(NextRow, 2) = "Частное предприятие"

проверка условия

TextBox1.Text = "" 'Очистка элементов управления для следующих записей

OptionUnknown = True

TextBox1.SetFocus

If TextBox1.Text = "" Then

MsgBox "Введите название организации."

TextBox1.SetFocus

Exit Sub

End If 'Проверка введения имени

End Sub

8. Перейдите на рабочий лист MS Excel и поместите элемент управления Кнопка панели элементов Visual Basic , после чего появиться диалоговое окно «Назначить макрос объекту», выберите вкладку «Создать». В окне модуля введите код:

Sub Кнопка1_Щелкнуть()‘начало процедуры

UserForm1.Show‘открытие формы

End Sub ‘конец процедуры

Поместите на ней надпись «Нажать» (рис. 45). С помощью этой кнопки будет вызываться разрабатываемое диалоговое окно, показанное на рисунке 44.

Рисунок 45. Законченный вид рабочего листа

9. Запустите проект и поверьте его на выполнение.

Упражнение 5. Разработка сложного приложения, которое создает базу данных для регистрации вкладов.

1. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 46.

Рисунок 46. Форма диалогового окна для программы регистрации вкладов

2. Элементам управления присвойте имена и свойства в соответствии таблицей 6.1.

Таблица 6.1

Элемент

Имя

Свойства

События

Форма

UserForm

1.Initialize

2.Устанавливает количество элементов в списке.

3.Присваивает значения элементам списка.

Форма

Вклад

Caption

Прием вклада

4.Изменяет текст в строке заголовка приложения.

5.Закрывает сроку формул.

6.Устанавливает всплывающие подсказки.

7.Формирует заголовки столбцов таблицы, обращаясь к специально созданной процедуре.

Кнопка

Принять

Caption

Принять

Click

Вычисляет номер первой свободной строки.

1.Поверяет, введены ли данные в поля формы.

2.Записывает данные из элементов управления Формы в ячейки рабочего листа

Кнопка

Отмена

Caption

Отмена

Click

1.Вычисляет номер последней строки таблицы.

2. Удаляет содержимое из ячеек этой строки.

Кнопка

Выход

Caption

Выход

Click

Завершает выполнение программы

Поле

Фамилия

Поле

Сумма

вклада

Поле со списком

Тип

Вклада

Переключатели

Северное

Центральное

Восточное

Поле

Примечание

3. Рабочему листу Excel c именем «Лист1» присвойте имя «Меню», а рабочему листу «Лист2» - «База».

4. На рабочем листе с именем «Меню» поместите элемент управления Кнопка панели элементов Visual Basic и поместите на ней надпись «Прием вклада». С помощью этой кнопки будет вызываться разрабатываемое диалоговое окно.

5. Для кнопки «Прием вклада» запишите код:

Private Sub CommandButton1_Click()

'Вызываем процедуру формирования заголовков БД

ЗаголовокРабочегоЛиста

End Sub

6. Для формирования заголовков столбцов базы данных создайте процедуру Sub пользователя, которая будет вызываться из процедуры обработки кнопки рабочего листа Прием вклада. Для этого выполните команду меню Visual Basic Вставка, Процедура и присвойте ей имя ЗагловокРабочегоЛиста. Процедура выполняет следующие действия:

  • проверяет, заполнена ли первая строка – строка заголовков столбцов (по назначению ячейки А1), если заполнена, то не выполняет никаких действий, завершает работу и передает управление в точку вызова;

  • если первая строка не заполнена, то в ячейки первой строки рабочего листа записывает названия граф таблицы базы данных, комментарии к ним, закрепляет первую строку и завершает работу, передавая управление в точку своего вызова.

В окне редактирования кода введите текст программы этой процедуры:

Private Sub ЗаголовокРабочегоЛиста()

'Активизируем рабочий лист

Application.Worksheets("База").Activate

'Проверяем, есть ли названия столбцов БД

With ActiveSheet

If .Range("A1").Value = "Фамилия" Then

.Range("A2").Select

Else

ActiveSheet.Cells.Clear

'Записываем названия столбцов

Range("A1:E1").Value = Array("Фамилия", "Тип", "Сумма", "Отделение", "Примечание")

'Фиксируем первую строку

.Range("2:2").Select

ActiveWindow.FreezePanes = True

.Range("A2").Select

'Вставляем комментарии

.Range("A1").AddComment

.Range("A1").Comment.Visible = False

.Range("A1").Comment.Text Text:="Фамилия клиента"

.Range("B1").AddComment

.Range("B1").Comment.Visible = False

.Range("B1").Comment.Text Text:="Тип вклада"

.Range("C1").AddComment

.Range("C1").Comment.Visible = False

.Range("C1").Comment.Text Text:="Сумма вклада"

.Range("D1").AddComment

.Range("D1").Comment.Visible = False

.Range("D1").Comment.Text Text:="Отделение банка"

End If

End With

'Вызываем элемент Форма с именем Вклад

Вклад.Show

End Sub

  1. В процедуру обработки события Initialize формы введите код:

Private Sub UserForm_Initialize()

With Вклад

.Северное.Value = True

'Установим длину элемента Список

.ТипВклада.ListRows = 3

'Присвоим значения элементами списка

.ТипВклада.List = Array("Срочный", "Депозит", "Текущий")

'Установим фокус элементу Кнопка с именем Принять

.Принять.SetFocus

End With

End Sub

  1. В процедуру обработки события Initialize элемента Форма с именем «Вклад» запишите код:

Private Sub Вклад_Initialize()

'Изменим название в строке заголовка приложения

Application.Caption = "Регистрация. База данных Банк"

'Изменим название в строке заголовка

Application.DisplayFormulaBar = False

With Принять

.Default = True

'Установка всплывающей подсказки

.ControlTipText = "Ввод данных в базу данных"

End With

With Отмена

.Cancel = True

.ControlTipText = "Кнопка отмены"

End With

ЗаголовокРабочегоЛиста

End Sub

  1. В процедуру обработки события Click элемента Кнопка с именем «Принять» введите код:

Private Sub Принять_Click()

“Декларадция переменных

Dim Фамилия As String

Dim ТипВклада As String

Dim СуммаВклада As Double

Dim Отделение As String

Dim Примечание As String

Dim НомерСтроки As Integer

'Вычисление номера первой свободной строки

НомерСтроки=_

Application.CountA (ActiveSheet.Columns(1)) + 1

With Вклад

If .Фамилия.Text = "" Then

MsgBox "Вы забыли указать фамилию", vbExclamation

Exit Sub

End If

If .ТипВклада.Value = "" Then

MsgBox "Вы забыли указать тип вклада", vbExclamation

Exit Sub

End If

TextBox1 = .Фамилия.Text

ТипВклада = .ТипВклада.Value

If .Северное.Value = True Then Отделение = "Северное"

If .Центральное.Value = True Then Отделение = "Центральное"

If .Восточное.Value = True Then Отделение = "Восточное"

If IsNumeric(.СуммаВклада.Text) = False Then

MsgBox "Введена неверная сумма", vbExclamation

Exit Sub

End If

СуммаВклада = CDbl(.СуммаВклада.Text)

Примечание = .Примечание.Text

End With

'Записываем данные в ячейки рабочего листа

With ActiveSheet

.Cells(НомерСтроки, 1).Value = Фамилия

.Cells(НомерСтроки, 2).Value = ТипВклада

.Cells(НомерСтроки, 3).Value = СуммаВклада

.Cells(НомерСтроки, 4).Value = Отделение

.Cells(НомерСтроки, 5).Value = Примечание

End With

End Sub

  1. В процедуру обработки события Click элемента Кнопка с именем «Отмена» поместите код:

Private Sub Отмена_Click()

Dim НомерСтроки As Integer

"Вычисляем номер последней строки

НомерСтроки = Application.CountA(ActiveSheet.Columns(1))

'Удаляем содержимое ячеек строки

With ActiveSheet

.Cells(НомерСтроки, 1).Value = ""

.Cells(НомерСтроки, 2).Value = ""

.Cells(НомерСтроки, 3).Value = ""

.Cells(НомерСтроки, 4).Value = ""

.Cells(НомерСтроки, 5).Value = ""

End With

End Sub

  1. В процедуру обработки события Click элемента Кнопка с именем «Выход» поместите код:

Private Sub Выход_Click()

'Активизируем рабочий лист с именем Меню

Sheets("Меню").Activate

'Завершаем выполнение программы

End

End Sub

  1. Перейдите в приложениеMS Excel, активизируйте рабочий лист Меню, изображенный на рисунке 47 и щелкните на кнопке «Прием вклада». Программа должна активизироваться, и на экране появиться созданное диалоговое окно (рисунок 46).

Рисунок 47. Законченный вид листа «Меню»

  1. Отладьте и проверьте работу программы во всех режимах.

  2. Сохраните проект.

Самостоятельная работа.

1. В примере п.2 выполните изменения в теле процедуры: выведите результат вычислений в ячейку С1.

2. На рабочем листе создайте кнопку для вывода формы на экран.

Контрольные вопросы.

1. Как присвоить текстовому полю (TextBox) какое –либо значение?

2. Какая панель инструментов используется для размещения элементов управления на рабочем листе?

3. Как вызвать панель инструментов Формы на рабочий лист MS Excel?

4. Что означают события: Click, Initialize и методы: Show, Unload, Hide?

5. Что означает свойство MultiSelect?