Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

исит_пр4

.docx
Скачиваний:
0
Добавлен:
12.04.2025
Размер:
446.69 Кб
Скачать

ГУАП

КАФЕДРА № 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:

  1. Option Explicit

  2. Private Sub CommandButton1_Click()

  3. 'Объявление переменных

  4. Dim Lrow, Lrow2 As Long

  5. 'Формулы расчета значений переменных

  6.  Lrow = Worksheets("Лист1").Cells(Worksheets("Лист1").Rows.Count, 1).End(xlUp).Row + 1

  7.  Lrow2 = Worksheets("Лист2").Cells(Worksheets("Лист2").Rows.Count, 1).End(xlUp).Row + 1

  8. 'Присвоение значений объектам на листе 1

  9. Sheets(1).Cells(Lrow, 1).Value = TextBox1.Value

  10. Sheets(1).Cells(Lrow, 2).Value = CDate(TextBox2.Value)

  11. Sheets(1).Cells(Lrow, 3).Value = TextBox3.Value

  12. Sheets(1).Cells(Lrow, 4).Value = TextBox4.Value

  13. Sheets(1).Cells(Lrow, 5).Value = TextBox5.Value

  14. Sheets(1).Cells(Lrow, 6).Value = TextBox6.Value

  15. Sheets(1).Cells(Lrow, 7).Value = CInt(TextBox7.Value)

  16. Sheets(1).Cells(Lrow, 8).Value = CInt(TextBox8.Value)

  17. Sheets(1).Cells(Lrow, 9).Value = CInt(TextBox9.Value)

  18. 'Присвоение значений объектам на листе 2

  19.  Sheets(2).Cells(Lrow2, 1).Value = TextBox1.Value

  20.  Sheets(2).Cells(Lrow2, 2).Value = TextBox3.Value

  21.  Sheets(2).Cells(Lrow2, 3).Value = TextBox5.Value

  22. Sheets(2).Cells(Lrow2, 4).Value = TextBox6.Value

  23.  TextBox1.Value = "": TextBox2.Value = ""

  24.  TextBox3.Value = "": TextBox4.Value = ""

  25.  TextBox5.Value = "": TextBox6.Value = "": TextBox7.Value = "":

  26.  TextBox8.Value = "": TextBox9.Value = ""

  27. End Sub

  28. 'Завершение работы

  29. Private Sub CommandButton2_Click()

  30. End

  31. End Sub

  32. 'Создание списка данных

  33. Private Sub CommandButton3_Click()

  34. With ListBox1

  35.  .AddItem "705"

  36.  .AddItem "415"

  37.  .AddItem "371"

  38.  .AddItem "19"

  39.  .AddItem "32"

  40.  .AddItem "147"

  41.  End With

  42. End Sub

  43. 'Выбор данных из списка

  44. Private Sub CommandButton4_Click()

  45. Select Case ListBox1.ListIndex

  46.  Case 0: TextBox1.Text = "705"

  47.  Case 1: TextBox1.Text = "415"

  48.  Case 2: TextBox1.Text = "371"

  49.  Case 3: TextBox1.Text = "19"

  50.  Case 4: TextBox1.Text = "32"

  51.  Case 5: TextBox1.Text = "147"

  52. End Select

  53. End Sub

  54.  

  55. Private Sub UserForm_Click()

  56.  

  57. 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

Соседние файлы в предмете Информационные системы и технологии