Изучение VBA. Обработка записей (Лабораторная работа № 5)

Страницы работы

5 страниц (Word-файл)

Содержание работы

Лабораторная работа № 5

ИЗУЧЕНИЕ VBA

 «Обработка записей»

I Краткая теория

            Наряду с массивами, представляющими нумерованный набор элементов одного типа, существует ещё один способ создания структурного типа – тип, определенный пользователем, или иначе он называется – запись.

            Запись – это совокупность нескольких элементов, каждый из которых может иметь свой тип. Элемент записи называется полем.

            Тип-запись описывается в модуле VBA до объявления самого модуля со слова Sub.

            Например, определим тип-запись Сотрудник, который будет состоять из полей Фамилия, Имя, Табельный_номер, Должность, Оклад.

Пример 1.

            Type Сотрудник

                        Фамилия As String*20

                        Имя As String*20

                        Табельный_номер As Integer

                        Должность As String*20

                        Оклад As Integer

            End Type

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

            Базу можно формировать непосредственно в программе присвоением каждому из полей конкретных константных значений.

Пример 2.

После объявления типа Сотрудник используем его в модуле для создания массива, содержащего элементы этого типа. Например, зададим программным путем 2 записи, содержащих сведения о двух сотрудниках и выведем их в таблицу Excel.

Примечание: доступ к полям осуществляется через название записи и поля, разделенных точкой.

Наберите на листе модуля следующий код (модуль всавляется в редакторе Visual Basic командой Insert - Module):

Type Сотрудник

Фамилия As String * 20

Имя As String * 20

Табельный_номер As Integer

Должность As String * 20

Оклад As Integer

End Type

Sub База_Данных_о_сотрудниках()

Dim Кадр(1 To 2) As Сотрудник

'присваиваем значения полям первой записи

Кадр(1).Фамилия = "Иванов"

Кадр(1).Имя = "Иван"

Кадр(1).Табельный_номер = "101"

Кадр(1).Должность = "инженер"

Кадр(1).Оклад = "3000"

'выводим эти значения в первый столбец таблицы Excel

Cells(1, 1) = Кадр(1).Фамилия

Cells(2, 1) = Кадр(1).Имя

Cells(3, 1) = Кадр(1).Табельный_номер

Cells(4, 1) = Кадр(1).Должность

Cells(5, 1) = Кадр(1).Оклад

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

Кадр(2).Фамилия = "Петров"

Кадр(2).Имя = "Петр"

Кадр(2).Табельный_номер = "102"

Кадр(2).Должность = "токарь"

Кадр(2).Оклад = "1000"

'выводим эти значения в первый столбец таблицы Excel

Cells(1, 2) = Кадр(2).Фамилия

Cells(2, 2) = Кадр(2).Имя

Cells(3, 2) = Кадр(2).Табельный_номер

Cells(4, 2) = Кадр(2).Должность

Cells(5, 2) = Кадр(2).Оклад

End Sub

Нажмите теперь F5, и перейдите в таблицы Excel. Вы увидите, что два столбца заполнились соответствующими данными.

Недостаток заполнения полей значениями программным путем в том, что код будет слишком громоздким, если записей окажется много.

Для облегчения ввода данных используем циклы. Причем данные пользователь будет сам вводить с клавиатуры через окно InputBox

Type Сотрудник

Фамилия As String * 20

Имя As String * 20

Табельный_номер As Integer

Должность As String * 20

Оклад As Integer

End Type

Sub База_Данных_о_сотрудниках()

Dim Кадр(1 To 5) As Сотрудник

'присваиваем значения полям i-той записи

For i = 1 To 5

Кадр(i).Фамилия = InputBox("Введите фамилию", "Ввод данных о сотруднике")

Кадр(i).Имя = InputBox("Введите имя", "Ввод данных о сотруднике")

Кадр(i).Табельный_номер = InputBox("Введите табельный номер", "Ввод данных о сотруднике")

Кадр(i).Должность = InputBox("Введите должность", "Ввод данных о сотруднике")

Кадр(i).Оклад = InputBox("Введите оклад", "Ввод данных о сотруднике")

'выводим эти значения в i-тый столбец таблицы Excel

Cells(1, i) = Кадр(i).Фамилия

Cells(2, i) = Кадр(i).Имя

Cells(3, i) = Кадр(i).Табельный_номер

Cells(4, i) = Кадр(i).Должность

Cells(5, i) = Кадр(i).Оклад

Next i

End Sub

 Чтобы регулировать количество записей по запросу пользователя, следует массив из записей сделать безразмерным:

Dim Кадр() As Сотрудник

А потом в программе запросить количество записей:

n = InputBox("Введите количество записей")

Затем переопределить размерность массива

ReDim Кадр(n)

Протестируйте ниже приведенный код и разберите участок программы, который очищает ячейки таблицы от ранее введенных значений:

Type Сотрудник

Фамилия As String * 20

Имя As String * 20

Табельный_номер As Integer

Должность As String * 20

Оклад As Integer

End Type

Sub База_Данных_о_сотрудниках()

Dim Кадр() As Сотрудник

'для очищения ячеек от предыдущих заполнений используем конструкцию:

Range("A1:H100").Select 'выделим диапазон ячеек с А1 по Н100

Selection.Clear 'очистим этот диапазон

Range("A1").Select 'перейдем в ячейку А1,чтобы с неё начать заполнение

n = InputBox("Введите количество записей")

ReDim Кадр(n)

'присваиваем значения полям i-той записи

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Методические указания и пособия
Размер файла:
114 Kb
Скачали:
0