лаб_раб по VBA
.docxЛабораторная работа № 1
«Работа с Excel и VBA»
Задание1. Создать программу с помощью VBA для заполнения базы данных по клиентам туристического агентства
Ход работы
Откройте редактор VBA (Разработчик→Visual Basic). Добавьте форму с помощью команды Insert→UserForm. Добавьте на форму необходимые компоненты согласно образцу.
При нажатии на кнопку ОК программа должна:
-
Заполнить переменные введенными значениями
-
Ввести полученные данные в соответствующую строку рабочего листа
Поэтому запишем следующий код:
Private Sub CommandButton1_Click()
' Объявление переменных
Dim Фамилия As String * 20
Dim Имя As String * 20
Dim Пол As String * 3
Dim ВыбранныйТур As String * 20
Dim Оплачено As String * 3
Dim Фото As String * 3
Dim Паспорт As String * 3
Dim Срок As String * 3
Dim НомерСтроки As Integer
' НомерСтроки - номер первой пустой строки рабочего листа
НомерСтроки = Application.CountA(ActiveSheet.Columns(1)) + 1
' Считывание информации из диалогового окна в переменные
With UserForm1
Фамилия = .TextBox1.Text
Имя = .TextBox2.Text
Срок = .TextBox3.Text
If .OptionButton1.Value = True Then
Пол = "Муж"
Else
Пол = "Жен"
End If
If .CheckBox1.Value = True Then
Оплачено = "Да"
Else
Оплачено = "Нет"
End If
If .CheckBox2.Value = True Then
Фото = "Да"
Else
Фото = "Нет"
End If
If .CheckBox3.Value = True Then
Паспорт = "Да"
Else
Паспорт = "Нет"
End If
ВыбранныйТур = .ComboBox1.List(.ComboBox1.ListIndex, 0)
End With
' Ввод данных в строку с номером НомерСтроки рабочего листа
With ActiveSheet
.Cells(НомерСтроки, 1).Value = Фамилия
.Cells(НомерСтроки, 2).Value = Имя
.Cells(НомерСтроки, 3).Value = Пол
.Cells(НомерСтроки, 4).Value = ВыбранныйТур
.Cells(НомерСтроки, 5).Value = Оплачено
.Cells(НомерСтроки, 6).Value = Фото
.Cells(НомерСтроки, 7).Value = Паспорт
.Cells(НомерСтроки, 8).Value = Срок
End With
End Sub
При загрузке формы программа должна:
-
Заполнить ComboBox значениями
-
Проверить есть ли соответствующие заголовки и закрепить первую строку(для этого реализована процедура ЗаголовокРабочегоЛиста)
Private Sub UserForm_Initialize()
ЗаголовокРабочегоЛиста
With ComboBox1
.List = Array("Прага", "Турция", "Париж")
.ListIndex = 0
End With
End Sub
Процедура ЗаголовокРабочегоЛиста
Sub ЗаголовокРабочегоЛиста()
If Range("A1").Value = "Фамилия" Then
Range("A2").Select
Exit Sub
End If
ActiveSheet.Cells.Clear
Range("A1:H1").Value = Array("Фамилия", "Имя", "Пол", "Выбранный Тур", "Оплачено", "Фото", "Паспорт", "Срок")
' Закрепляется первая строка
Range("2:2").Select
ActiveWindow.FreezePanes = True
Range("A2").Select
End Sub
Задание 2. Измените программу, добавив ввод стоимости тура.