Главная страница
Навигация по странице:

  • Методические указания

  • Самостоятельное задание

  • Информатика практическая. Практическая работа_UserForm. Пользовательская форма


    Скачать 100 Kb.
    НазваниеПользовательская форма
    АнкорИнформатика практическая
    Дата10.03.2022
    Размер100 Kb.
    Формат файлаdoc
    Имя файлаПрактическая работа_UserForm.doc
    ТипУрок
    #390998

    Практическая работа №

    Тема «Пользовательская форма»

    Цель урока

    Создать форму, позволяющую делать следующие операции:

    • Последовательное заполнение плоской базы данных

    • Программирование примечаний

    • Программирование текстовых полей на рабочем листе

    • Использование переключателя и флажков

    • Создание пользовательского заголовка окна приложения

    • Как на рабочем листе программно закрепить область

    Методические указания

    Для заполнения базы данных на рабочем листе с помощью редактора пользовательских форм создадим диалоговое окно Регистрация туристов фирмы "Эх, прокачу!" (рис.1).



    Рис.1. Диалоговое окно Регистрация туристов фирмы "Эх, прокачу!"



    Рис.2.База данных о туристах на рабочем листеи пояснительное текстовое поле, появляющееся при выборе переключателя «О программе»

    При инициализации диалогового окна программа проверяет, есть ли заголовки у полей создаваемой базы данных о регистрации туристов. Если этих заголовков нет, то программа автоматически создает их, снабжая примечаниями, имеющими пояснительный текст о содержании полей Выбор переключателя о программе приведет к отображению на экране текстового поля с пояснениями к данной программе. Снятие этого флажка удаляет данное поле (2).
















    UserForm Initialize

    1. Активизирует диалоговое окно.

    2. Назначает клавише функцию кнопки Отмена, а Клавише - Вычислить.

    3. Назначает кнопкам вычислить, отмена и переключателю о программе всплывающие подсказки.

    4. Закрепляет первую строку так, чтобы она всегда отображалась на экране.

    5. Создает заголовки полей базы данных, если они еще не были созданы.

    6. Устанавливает начальное значение переключателя 0 программе.

    7. Заполняет раскрывающийся список.

    8. Устанавливает текст заголовка окна приложения.







    Нажатие кнопки вычислить запускает на выполнение процедуру

    CommandButton1_Click

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

    2. Считывает данные из диалогового окна.

    3. Вводит их в первую пустую строку.







    Нажатие кнопки Отмена запускает на выполнение процедуру

    CommandButton2_Click

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







    SpinButtonl_Change

    Вводит значение в поле продолжительность тура.


































    ToggleButtonl Click

    Отображает текстовое поле в выбранном состоянии и удаляет его — в снятом состоянии.







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

    Создает заголовки полей базы данных о регистрации туристов. Эти заголовки отображаются с примечаниями.

















    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
    Private Sub CommandButton2_Click()

    UserForm1.Hide

    Application.Caption = Empty

    ActiveSheet.DrawingObjects.Delete
    End Sub
    Private Sub SpinButton1_Change()

    ' Процедура ввода значения счетчика в поле ввода

    With UserForm1

    .TextBox3.Text = CStr(.SpinButton1.Value)
    End With

    End Sub


    Private Sub TextBox3_Change()

    With UserForm1

    .SpinButton1.Value = CInt(.TextBox3.Text)

    End With
    End Sub
    Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

    ActiveSheet.DrawingObjects.Delete

    ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 11.25, 44.25, 106.5, 96#).Select

    Selection.Characters.Text = ""

    With Selection.Font

    .Name = "Arial Cyr"

    .FontStyle = "обычный"

    .Size = 10

    .Strikethrough = False

    .Superscript = False

    .Subscript = False

    .OutlineFont = False

    .Shadow = False

    .Underline = xlUnderlineStyleNone

    .ColorIndex = xlAutomatic

    End With

    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 13

    Selection.ShapeRange.Fill.Visible = msoTrue

    Selection.ShapeRange.Fill.Solid

    Selection.Characters.Text = _

    "Программа составлена " & Chr(10) & _

    "!!!!!!!!!!!!!! для регистрации " & Chr(10) & _

    "клиентов" & Chr(10) & "туристической " & Chr(10) & "фирмы"
    With Selection.Characters(Start:=1, Length:=86).Font

    .Name = "Arial Cyr"

    .FontStyle = "обычный"

    .Size = 10

    .Strikethrough = False

    .Superscript = False

    .Subscript = False

    .OutlineFont = False

    .Shadow = False

    .Underline = xlUnderlineStyleNone

    .ColorIndex = xlAutomatic

    End With

    End If

    If ToggleButton1.Value = False Then

    ActiveSheet.DrawingObjects.Delete

    End If
    End Sub
    Private Sub UserForm_Initialize()

    ' Процедура вызова диалогового окна

    ' и задание элементов раскрывающегося списка

    '

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

    '

    ' Задание пользовательского заголовка окна приложения

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

    '

    ' Закрытие строки формул окна Excel

    Application.DisplayFormulaBar = False

    '

    ' Задание элементов раскрывающегося списка

    '

    With CommandButton1

    .Default = True

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

    End With

    With CommandButton2

    .Cancel = True

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

    End With

    With ToggleButton1

    .Value = False

    .ControlTipText = "Информация о программе"

    End With

    With ComboBox1

    .List = Array("Лондон", "Париж", "Берлин")

    .ListIndex = -1

    End With

    'UserForm1.Show

    End Sub

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

    '

    ' Процедура создания заголовков полей базы данных

    '

    ' Если заголовки существуют, то досрочный выход из процедуры

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

    Range("a2").Select

    Exit Sub

    End If

    ' Если заголовки не существуют, то создаются заголовки полей

    '

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

    Range("b1").Value = "Имя"

    Range("c1").Value = "Пол"

    Range("d1").Value = "Выбранный Тур"

    Range("e1").Value = "Оплачено"

    Range("f1").Value = "Фото"

    Range("g1").Value = "Паспорт"

    Range("h1").Value = "Срок"
    Range("A:A").ColumnWidth = 12

    Range("D:D").ColumnWidth = 14.4

    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:="направление тура"

    Range("e1").AddComment

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

    Range("e1").Comment.Text Text:="путевка оплачена да/нет"

    Range("f1").AddComment

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

    Range("f1").Comment.Text Text:="фотографии сданы да/нет"

    Range("g1").AddComment

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

    Range("g1").Comment.Text Text:="наличие паспорта да/нет"

    Range("h1").AddComment

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

    Range("h1").Comment.Text Text:="Продлжительность поездки"

    End Sub

    В данной программе для определения первой пустой строки в заполняемой базе данных о туристах используется инструкция

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

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

    При ее написании процедуры «ЗаголовокрабочегоЛиста» лучше всего воспользоваться MacroRecorder, который переведет производимые действия по созданию примечаний пользователем вручную на язык VBA. Примерный вид макроса

    Sub Макрос1()

    '

    ' Макрос1 Макрос

    '

    Range("2:2").Select

    ActiveWindow.FreezePanes = True

    Range("Al").AddComment

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

    Range ("Al"). Comment.Text Тех^="Фамилия клиента"

    Range("Bl").AddComment

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

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

    Range("Cl").AddComment

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

    Range("Cl").Comment.Text Text:="Пол клиента"

    Range("Dl").AddComment

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

    Range("Dl").Comment.Text Text:="Направление" & Chr(10) &

    "выбранного тура" Range("El").AddComment

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

    Range("El").Comment.Text Text:="Путевка оплачена?" & Chr(10) &

    "(Да/Нет)"

    Range("Fl").AddComnent

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

    Range("Fl").Comment.Text Text:="Фото сданы" & Chr(10) &

    "(Да/Нет)"

    Range("Gl").AddComment Range("Gl").Comment.Visible = False

    Range("Gl").Comment.Text Text:="Наличие паспорта" & Chr(10) &

    " (Да/Нет) "

    Range("H1").AddComment Range("H1").Comment.Visible = False

    Range("H1").Comment.Text Text:="Продолжительность" & Chr(10) &

    "поездки"

    End Sub

    Первые две инструкции записанного макроса показывают, как программно закрепляется область, а остальные - как создаются примечания у ячеек рабочего листа. Теперь, при создании приложения эти фрагменты просто надо вставить в требуемое место набираемой программы.

    Аналогично, при написании фрагмента программы, связанного с созданием текстового поля, лучше всего воспользоваться MacroRecorder, который переведет производимые пользователем вручную действия по созданию текстового поля на язык VBA.

    Sub Макрос4()

    '

    ' Макрос4 Макрос

    '

    '

    ActiveSheet.Shapes.

    AddTextbox(msoTextOrientationHorizontal, 9.75, 45#, _

    108.75, 96#).Select

    Selection.Characters.Text = _

    "Программа составлена " & Chr(10) &

    "Андреем Гарнаевым для регистрации " & Chr(10)

    & "клиентов" & Chr(10) &

    "туристической " & Chr(10) & "фирмы" With

    Selection.Characters(Start:=1, Length:=86).Font

    .Name = "Arial Cyr"

    .FontStyle = "обычный"

    .Size = 10

    .Strikethrough = False

    .Superscript = False

    .Subscript = False

    .OutlineFont = False

    .Shadow = False

    .Underline = xlUnderlineStyleNone,

    .Colorlndex = xlAutomatic

    End With

    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 13

    Selection.ShapeRange.Fill.Visible = msoTrue Selection.ShapeRange.Fill.Solid

    End Sub

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

    Самостоятельное задание

    Разработать приложение с диалоговым окном регистрация клиентов отеля "хромая кобыла" (рис. 3), в котором:

    • Счетчик управляет вводом продолжительности проживания

    • В раскрывающемся списке выводятся три типа номеров: одноместный, Двухместный, Люкс, стоимость проживания в которых равна 1500, 1000 и 2500 руб. в сутки

    • Если постоялец заказывает завтраки в номер, то суточная оплата возрастает на 150 руб.

    • При нажатии на кнопку ОК в поле «Стоимость проживания» выводится суммарная стоимость проживания клиента, и все данные из диалогового окна должны вводиться в базу данных, создаваемую на рабочем листе



    Задание 2



    Установить значение процентной ставки в зависимости от категории посетителя тренажерного зала. Если «Студент» – скидка 50%, «Преподаватель» – скидка 30%. Значение процента скидки отобразить в надписи.

    Пусть стоимость каждой услуги задана числовой константой. При выборе определенной услуги ее стоимость добавляется к значению поля ввода
    «Сумма». Соответственно при отказе от услуги ее стоимость вычитается. При изменении положения переключателя, кроме изменения процентной ставки, будет обновляться значение «К оплате»


    написать администратору сайта