
исит_пр4
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
Кандидат технических наук |
|
|
|
Е.Л. Турнецкая |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ПРАКТИЧЕСКОЙ РАБОТЕ ПО VBA |
РАБОТА С ПОЛЬЗОВАТЕЛЬСКИМИ ФОРМАМИ |
по курсу: ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ |
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
4116 |
|
|
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2022
Цель работы: освоение методов создания пользовательских диалоговых окон.
Индивидуальное задание:
Журнал учета театрального состава (Код спектакля, День проведения спектакля, Репертуар, Директор постановки, ФИО актёра (актрисы), Роль актёра (актрисы), Гонорар актёра за спектакль, Надбавка за спектакль каждому актёру, Итоговая сумма к оплате)
1.) На первом и втором листах книги Excel созданы таблицы с соответствующими названиями столбцов (рис.1.1, рис.1.2). Установлены нужные форматы ячеек на каждой странице.
Рис.1.1- Верхний заголовок для таблицы на Листе1
Рис.1.2-
Верхний заголовок для таблицы на Листе2
2.) Далее был выполнен переход на вкладку Разработчик>Visual Basic. Затем была добавлена форма UserForm1 в проект, с помощью действий Insert>UserForm (рис.2.1)
Рис2.1- Добавление UserForm1
На добавленной форме установлены требуемые по заданию элементы (рис.2.4). Для их выравнивания были одновременно охвачены пунктирной рамкой все элементы, и задана команда Format>Align>Right (рис.2.2). В окне свойств в свойстве Caption заданы названия объектов и в свойстве Font установлен шрифт Nimes New Roman (рис.2.3)
Рис.2.2-Выравнивание элементов
Рис.2.3- Выбор значений свойства Font
Рис.2.4- Вариант заполнения формы
3.) Затем был выполнен переход в режим программного кода, ПКМ> View Code.
Чтобы в программном коде проводилась автоматическая проверка на то, что объявлены все переменные в самом начале модуля поставлен оператор Option Explicit. Для его активации вызвано окно настроек VBA (Tools>Options) и поставлена галочка для пункта Recuire Variable Declaration (рис.3.1)
Рис.3.1- Активации оператора Option Explicit
Для нахождения последней незаполненной строчки в первом столбце применён метод
Cells(Worksheets("Sheet1").Rows.Count,1).End(xlUp).Row,
где Worksheets("Sheet1")– объект листа Sheet1 книги Worksheets;
Rows.Count – возвращает общее количество строк на листе;
End(xlUp).Row – перемещает курсор до первой незаполненной строчки
Для элемента CommandButton1 представлен программный код, который позволяет заполнять ячейки в таблицах на двух листах одновременно. Были написаны программные коды процедур для заполнения каждой ячейки таблицы, находящиеся в одной строке (TextBox.Text возвращает данные типа String, метод CInt() предназначен для целых чисел, при пересылке данных в формате даты использовался метод преобразований Cdate())
Для элемента CommandButton3 представлен программный код, который реализует список (для добавления опций в объект управления ListBox1 использовался метод AddIte)
Для кнопки CommandButton4 написан код с применением оператора выбора Case, который осуществляет выборку данных из списка
Для закрытия формы по щелчку написан код для кнопки CommandButton2
Программный код VBA:
Option Explicit
Private Sub CommandButton1_Click()
'Объявление переменных
Dim Lrow, Lrow2 As Long
'Формулы расчета значений переменных
Lrow = Worksheets("Лист1").Cells(Worksheets("Лист1").Rows.Count, 1).End(xlUp).Row + 1
Lrow2 = Worksheets("Лист2").Cells(Worksheets("Лист2").Rows.Count, 1).End(xlUp).Row + 1
'Присвоение значений объектам на листе 1
Sheets(1).Cells(Lrow, 1).Value = TextBox1.Value
Sheets(1).Cells(Lrow, 2).Value = CDate(TextBox2.Value)
Sheets(1).Cells(Lrow, 3).Value = TextBox3.Value
Sheets(1).Cells(Lrow, 4).Value = TextBox4.Value
Sheets(1).Cells(Lrow, 5).Value = TextBox5.Value
Sheets(1).Cells(Lrow, 6).Value = TextBox6.Value
Sheets(1).Cells(Lrow, 7).Value = CInt(TextBox7.Value)
Sheets(1).Cells(Lrow, 8).Value = CInt(TextBox8.Value)
Sheets(1).Cells(Lrow, 9).Value = CInt(TextBox9.Value)
'Присвоение значений объектам на листе 2
Sheets(2).Cells(Lrow2, 1).Value = TextBox1.Value
Sheets(2).Cells(Lrow2, 2).Value = TextBox3.Value
Sheets(2).Cells(Lrow2, 3).Value = TextBox5.Value
Sheets(2).Cells(Lrow2, 4).Value = TextBox6.Value
TextBox1.Value = "": TextBox2.Value = ""
TextBox3.Value = "": TextBox4.Value = ""
TextBox5.Value = "": TextBox6.Value = "": TextBox7.Value = "":
TextBox8.Value = "": TextBox9.Value = ""
End Sub
'Завершение работы
Private Sub CommandButton2_Click()
End
End Sub
'Создание списка данных
Private Sub CommandButton3_Click()
With ListBox1
.AddItem "705"
.AddItem "415"
.AddItem "371"
.AddItem "19"
.AddItem "32"
.AddItem "147"
End With
End Sub
'Выбор данных из списка
Private Sub CommandButton4_Click()
Select Case ListBox1.ListIndex
Case 0: TextBox1.Text = "705"
Case 1: TextBox1.Text = "415"
Case 2: TextBox1.Text = "371"
Case 3: TextBox1.Text = "19"
Case 4: TextBox1.Text = "32"
Case 5: TextBox1.Text = "147"
End Select
End Sub
Private Sub UserForm_Click()
End Sub
4.) Для открытия формы для заполнения прямо с листа Excel выполнен переход на вкладку Разработчик>Элементы управления>Элементы ActiveX и выбран элемент управления Button (рис.4.1)
Рис.4.1- Активация элемент управления Button
Для автоматического автосохранения внесенных записей перед закрытием книги создадим событийную процедуру BeforeClose для объекта Workbook (рис.4.2)
Рис.4.2- Макрос на автоматическое сохранение данных при закрытии рабочей книги Excel
5.) Результат работы приложения
На рис.5.1 показан результат внесения данных для первой строки
Рис5.1-Заполнение пользовательской формы данными одной строки
Рис.5.2- Заполнение пользовательской формы данными второй строки
Рис.5.3- Форма с введёнными данными до заполнения
Рис.5.4- Корректность работы приложения
Рис.5.5- Корректность работы приложения для второго листа
Выводы:
Получен опыт работы с формой UserForm1 (установка на форме различных элементов, выравнивание элементов с помощью инструмента Align)
В режиме программного кода изучен метод CSng() для вещественных чисел, метод CInt() для целых, для данных в формате даты метод преобразований Cdate(), изучен оператор выбора Case.
Во время выполнения практической работы возникали проблемы с написание кода, а именно с определением типов данных.
Список используемых источников:
1.) «Программирование на VBA MS Excel», Н. Г. Кудрявцев, Д. В. Кудин, М. Ю. Беликова
2.) Основы программирования на Visual Basic и VBA в Excel 2007