Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
196
Добавлен:
17.04.2015
Размер:
1.69 Mб
Скачать

котором пользователь может ввести данные вместо выбора из списка. Использование возможности редактирования свойства ComboBox зависит от свойства Style.

Свойство Style элемента управления ComboBox имеет два значения: fmStyleDropDownCombo – чтобы дать возможность вводить данные или выбирать из списка; fmStyleDropDownList – чтобы ограничить выбор только раскрывающимся списком.

Свойство Name элемента управления ListBox устанлено равным DeptList.

Свойство Name элемента управления ComboBox установлено равным TitleList.

3.3.2.Программирование формы и ее элементов управления

Чтобы форму можно было использовать, необходимо создать следующие процедуры:

Макрос для отображения диалогового окна. Это может быть просто макрос в проекте рабочей книги, или процедура какого-нибудь другого объекта в рабочей книге.

Процедура для выхода из диалогового окна, кото-

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

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

41

разных элементах управления или ввод данных в элементы управления формы.

Процедура ПолучитьИмяПользователя отображает пользовательскую форму.

Sub ПолучитьИмяПользователя()

Polz.Show End Sub

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

Процедура события Click для кнопки ОК может быть использована для скрытия формы и ввода данных элементов управления формы на рабочий лист.

Щелкните правой кнопкой мыши на кнопке ОК и из контекстного меню выберите Программа.

Из списка событий выберите Click. Перед словом Sub в процедурах для событий стоит слово Private. Такие процедуры могут быть вызваны только внутри данного модуля.

Вид данной процедуры:

Private Sub CommandButton1_Click()

Me.Hide

Range("Пользователь").Formula = Me.ИмяПользователя.Text

Range("ОтделПользователя").Formula =

Me.DeptList.Text

Range("ДолжностьПользователя").

Formula =_ Me.TitleList.Text

End Sub

Ключевое слово Me означает ссылку на текущий класс объекта и позволяет не указывать название объекта непосредственно.

Процедура события Click для кнопки Отмена может

42

быть использована для скрытия формы.

Щелкните правой кнопкой мыши на кнопке Отмена и из контекстного меню выберите Программа.

Вид данной процедуры:

Private Sub CommandButton2_Click()

Me.Hide End Sub

При загрузке формы, но перед ее появлением происходит событие инициализации – Initialize. В это время следует установить свойства формы и ее элементов управления. Для задания этой процедуры выполните следующие действия:

В окне проекта дважды щелкните по форме, чтобы открыть окно разработки форм.

Дважды щелкните на фоне формы, чтобы открыть окно программы для формы.

Из списка процедур выберите процедуру Initialize. Чтобы в списках появлялись названия отделов и

должностей, их отображают посредством вызова метода AddItem элементов управления списков. Для каждого элемента управления вызвана процедура AddItem с текстом этого элемента. Элементы добавляются один за другим. Также в процедуре устанавливается свойство списков Text.

Private Sub UserForm_Initialize()

Dim DeptTxt As String, TitleTxt As

String

ИмяПользователя.Text =

Range("Пользователь").Text DeptTxt =

Range("ОтделПользователя").Text TitleTxt =

Range("ДолжностьПользователя").Text With Me.DeptList

.AddItem "Бухгалтерия"

.AddItem "Производство"

43

.AddItem "Управление"

.AddItem "Кадры"

.AddItem "Сбыт"

.AddItem "Реклама"

.AddItem "Транспорт"

.AddItem "Поддержка"

.AddItem "Маркетинг"

.Text = DeptTxt

End With

With Me.TitleList

.AddItem "Пользователь"

.AddItem "Администратор"

.AddItem "Ассистент"

.Text = TitleTxt End With

End Sub

Чтобы информация из формы могла передаваться на лист, следует задать имена ячейкам: «Пользователь», «ОтделПользователя», «ДолжностьПользователя».

3.3.3. Использование флажков, переключателей и рамок

Элементы управления Frame (рамка) используются для объединения в группу нескольких других элементов управления. Элементы управления OptionButton (переключатели) используются для выбора одного элемента из группы элементов. Переключатель может содержать любое количество элементов, но поскольку он занимает много места, используют небольшие списки переключателей (не больше шести элементов). Если в форме только одна группа переключателей, то их не стоит заключать в рамку. Если предполагается использование рамок, проще разместить сначала рамку, а затем переключатели внутри рамки. С помощью элементов управления CheckBox можно задавать простые вопросы (True/False или Yes/No). Действия флажков независимы один от другого.

44

Форма, изображенная на рисунке, создается аналогично форме Пользователь.

переключатели

рамка

флажок

свойство Name для формы задано InOf, а свойство Caption – Информация об офисе.

свойства Caption для первой рамки – Ofis, для второй – Status.

свойства для переключателей в первой рамке: Name соответственно Moskow, Kiev, SP; а свойства Caption – Москва, Киев, Санкт-Петербург.

свойства для переключателей во второй рамке:

Name соответственно Stavka, Exam, PerHour; а свойства

Caption – Ставка, Исп. срок, Повременная.

код для события Click кнопки Отмена, аналогичен предыдущей форме.

Для вывода информации на лист ячейкам заданы имена «Офис», «Статус», «Оздоровительный план», «План401К».

Private Sub CommandButton1_Click()

Me.Hide

If Moskow.Value = True Then

Range("Офис").Formula = "Москва"

ElseIf Moskow.Value = True Then

45

Range("Офис").Formula = "Киев" Else

Range("Офис").Formula = "Санкт-Петербург" End If

If Stavka.Value = True Then Range("Статус").Formula = "Ставка"

ElseIf Exam.Value = True Then Range("Статус").Formula = "Исп. срок"

Else

Range("Статус").Formula = "Повременная" End If

If HealthPlan.Value = True Then Range("ОздоровительныйПлан").Formula =

"Подходит" Else

Range("ОздоровительныйПлан").Formula =

"Нет"

End If

If Chk401Plan.Value = True Then Range("План401К").Formula = "Подходит"

Else

Range("План401К").Formula = "Нет" End If

End Sub

Private Sub UserForm_Initialize()

Select Case Range("Офис").Text

Case "Москва"

Moskow.Value = True

Case "Киев"

Kiev.Value = True

Case "Санкт-Петербург"

SP.Value = True

Case Else

Moskow.Value = True

End Select

Select Case Range("Статус").Text

Case "Ставка"

Stavka.Value = True

Case "Исп. Срок"

Exam.Value = True

Case "Повременная"

46

PerHour.Value = True Case Else

Stavka.Value = True End Select

End Sub

3.3.4. Использование выключателей и счетчиков.

Элемент управления выключатель (ToggleButton) очень похож на флажок и имеет то же назначение. Разница в отображении элементов: выключатель внешне похож на кнопку, но его состояние соответствует значению, связанному с элементом управления. Если кнопка изображена нажатой, ее состояние представляет значение True, не нажатой – значение False.

Элемент управления счетчик (SpinButton) используется для изменения числовых значений текстовых полей. Щелчки на кнопках со стрелками вызывают события SpinUp и SpinDown в зависимости от того, на какой из стрелок щелкнул пользователь. Поэтому следует определить, какие действия будут выполнены при возникновении одного из этих событий. На изображенной форме счетчик используется для модификации значения в текстовом поле путем его увеличения или уменьшения на 10 км. В процедуре SpinDn есть проверка среднего значения пробега, чтобы значение не было меньше нуля.

Свойство Name для формы - DataPr, для выключа-

телей – TogglePublic и ToggleCar, для поля – txtCommuteKM, для кнопки ОК – OkdButton, для кнопки

47

Отмена – CancelButton.

Свойство Picture выключателя содержит картинку.

События для формы (Initialize), для стрелок счетчика и для кнопок, заданы в соответствии с приведенными программами.

Ячейки рабочего листа имеют имена «Общественный», «Автомобиль» и «ДневнойПробег».

Для отображения формы задана процедура:

Private Sub UserForm_Initialize()

If Range("Общественный").Text = "Да" Then

Me.TogglePublic.Value = True

Else

Me.TogglePublic.Value = False

End If

If Range("Автомобиль").Text = "Да" Then

Me.ToggleCar.Value = True

Else

Me.ToggleCar.Value = False

End If

Me.TxtCommuteKM.Text =

Range("ДневнойПробег").Text

End Sub

Private Sub SpinCommute_SpinUp()

Dim Kilometr As Variant

Kilometr = Me.TxtCommuteKM.Text

If Kilometr = "" Then

Kilometr = 10

Else

Kilometr = Kilometr + 10

End If

Me.TxtCommuteKM.Text = Kilometr

End Sub

Private Sub CancelButton2_Click()

Me.Hide

End Sub

Private Sub SpinCommute_SpinDown()

Dim Kilometr As Variant

48

Kilometr = Me.TxtCommuteKM.Text

If Kilometr = "" Then

Kilometr = 10

Else

Kilometr = Kilometr - 10

If Kilometr < 0 Then

Kilometr = 0

End If

Me.TxtCommuteKM.Text = Kilometr

End Sub

Private Sub OKdButton_Click() Me.Hide

If Me.TogglePublic.Value = True Then Range("Общественный").Formula = "Да"

Else

Range("Общественный").Formula = "Нет"

End If

If Me.ToggleCar.Value = True Then

Range("Автомобиль").Formula = "Да"

Else

Range("Автомобиль").Formula = "Нет"

End If

Range("ДневнойПробег").Formula =

Me.TxtCommuteKM.Text End Sub

3.3.5. Использование элементов управления набора вкладок и набора страниц

В приложениях Windows вкладки часто используются для диалоговых окон. Использование вкладок позволяет поместить в диалоговом окне множество элементов управления, разбивая их на категории.

Элемент управления MultiPage (набор страниц) позволяет создать две или более страниц в форме. Каждая страница содержит собственный набор элементов управления, которые действуют независимо друг от друга. Это позволяет разделить сложную форму на разделы, сделав ее более наглядной для пользователя.

Элемент управления TabStrip (набор вкладок) по-

49

зволяет использовать простой набор элементов управления для нескольких наборов данных. Набор вкладок применяется, если есть несколько наборов данных в форме, которая использует простой набор связанных элементов управления.

Можно переименовывать вкладки, а также добавлять страницы. Номер отображаемой страницы задается свойством Value (0 – для первой страницы и т.д.).

На второй странице содержится элемент управления TabStrip. Одна и та же пара текстовых полей будет использоваться для всех четырех телефонов, поскольку для каждого телефона задается номер и код. Данные о телефонах будут храниться в массиве (переменная Phones) из четырех строк и двух столбцов. Массив объявляется в разделе (Общая область). Таким образом, массив будет доступен только для процедур формы. Для элемента управления TabStrip есть процедура события, программируемая так, чтобы каждый раз при выборе пользователем вкладки, текстовые поля набора вкладок обновлялись. Процедура события Change содержит операторы для копирования значений массива Phones в текстовые поля в зависимости от того, какая вкладка набора выбрана. У элемента управления TabStrip также есть свойство Value, которое равно 0, если выбрана первая страница и т.д. На рабочем листе следует задать имя диапазону ячеек, в которые будут копироваться номера телефонов.

События для элементов формы программируются аналогично предыдущим примерам

50

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