Содержание 1 введение 6

Вид материалаРеферат
8 Интегрированная среда vba 8.1 Окно редактирования проекта
Шаг с заходом
Шаг с обходом
Шаг с выходом
8.2 Окно редактирования форм UserForm
8.2.1 Создание формы
8.2.2 Размещение элементов управления в форме
Элементы управления
8.2.2.1 Поле (TextBox)
Value. Это свойство имеет тип Variant
TextBox можно использовать следующие инструкции: Dim varFirstName As Variant
TextBox применяется для отображения доступной только для чтения информации, такой, как имена файлов), следует «отключить» поле с
Shift) используется свойство SelText
VarText = "У Петрова был экзамен"
8.2.2.2 Надпись (Label)
8.2.2.3 Кнопка (CommandButton)
CommandButton1, CommandButton2
Dim Str_My_Button_Caption As String
Нажатие кнопки
Debug.Print "Моя новая программа"
...
Полное содержание
Подобный материал:
1   ...   8   9   10   11   12   13   14   15   ...   25

8 Интегрированная среда vba




8.1 Окно редактирования проекта



Написание и отладка программ осуществляется с использованием интегрированной среды Visual Basic. Среда (в дальнейшем мы будем называть ее редактором) VBA активизируется командой Сервис/Макрос/Редактор Visual Basic непосредственно с рабочего окна программы Word либо Excel. Вид окна редактора Visual Basic показан на рисунке 8.1.






Рис. 8.1  Окно VBA


Интерфейс редактора Visual Basic является стандартным для всех приложений Windows. В верхней части окна находится строка меню, ниже располагается панель инструментов Стандартная. В рабочем поле могут отображаться следующие окна: Проект, Свойства, Проверка, Локальные переменные, Контрольные значения, Просмотр объектов, Программа. Вызов всех перечисленных окон выполняется с помощью почти одноименных меню Вид.

Программное окно или окно модуля служит для написания любых программ (макросов, процедур любого типа) VBA. Под строкой заголовка окна содержится два списка: список объектов модуля и список процедур, связанных с выбранным объектом. В окне модуля можно задать отображение отдельной процедуры или модуля в целом. Переключение режимов отображения выполняется с помощью кнопок, расположенных в левом нижнем углу окна модуля. Тексты программ вводятся непосредственно в окне модуля.

Чтобы добавить в проект VBA новый модуль, необходимо выполнить следующие команды:

1) выбрать в окне проекта проект, в состав которого добавляется модуль;
  1. выполнить команду Модуль меню Вставка;
  2. присвоить модулю имя. Для этого необходимо открыть окно Свойства (рис. 7.2) и в диалоговом окне ввести новое имя.


Формирование и отладка

процедур

Для добавления процедуры необходимо выполнить следующие команды:
  1. открыть окно модуля;
  2. выполнить команду Процедура меню Вставка (рис. 7.3);
  3. в предложенном окне запроса выбрать тип процедуры (Sub, Function или Property);
  4. в поле Имя ввести имя процедуры: любая последовательность символов;
  5. задать область определения функции (Public – общая или Private – личная);
  6. при необходимости установить переключатель Все локальные переменные считать статическими;
  7. нажать кнопку ОК.

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

Отладка процедур проводится для выявления и исправления синтаксических и алгоритмических ошибок.

Синтаксические ошибки заключаются в неправильной записи инструкций VBA, неверном указании имен процедур и переменных. Такие ошибки выявляются автоматически на этапе компиляции.

Алгоритмические ошибки проявляются в том, что процедура не дает ожидаемых результатов. Такие ошибки выявляются путем пошагового выполнения процедуры и контроля промежуточных результатов с помощью средств отладки VBA.

Пошаговое выполнение процедур можно задать с помощью панели инструментов Отладка или с помощью команд одноименного меню.

Меню Отладка предоставляет четыре варианта пошагового выполнения процедуры:
  1. Команда Шаг с заходом предписывает выполнить одну строку процедуры и перейти к следующей. В случае, если очередная строка содержит вызов процедуры, то осуществляется переход к ее первой инструкции.
  2. Команда Шаг с обходом предписывает выполнить одну строку процедуры и перейти к следующей. Вызываемая процедура выполняется как одна строка. Этот вариант применяется в том случае, когда вызываемая процедура уже отлажена.
  3. Команда Шаг с выходом задает выполнение текущей процедуры до конца и переход к следующей инструкции в вызывающей процедуре.
  4. Команда Выполнить до текущей позиции задает выполнение процедуры от текущей инструкции до инструкции, в которой был предварительно установлен курсор.

Отладка процедур сопровождается переходом в режим прерывания. Переход в этот режим происходит в следующих случаях:
  • при прерывании выполнения макроса с помощью комбинации +;
  • при пошаговом выполнении процедуры;
  • при достижении инструкции Stop;
  • при достижении точек останова.

Для выхода из режима прерывания нужно в среде редактора Visual Basic выполнить команду Сброс меню Запуск.

8.2 Окно редактирования форм UserForm




Для создания диалоговых окон разрабатываемых приложений в VBA используются формы. Помимо всего прочего формы позволяют реализовать интерфейс, который знаком пользователю. Редактор форм является одним из основных инструментов визуального программирования.

8.2.1 Создание формы



Диалоговое окно является формой. Чтобы добавить форму в проект:
  1. Запустите редактор VBA.
  2. Выберите команду Вставка\Форма (Insert\UserForm). Выводится новая форма (рис. 8.1).
  3. Добейтесь требуемого размера формы, перетащив маркеры изменения размеров.





Рис. 8.1  Новая форма

8.2.2 Размещение элементов управления в форме



Чтобы разместить элемент управления в форме:
  1. На панели инструментов Элементы управления щелкните значок того элемента, который требуется добавить в форму.
  2. С помощью мыши разместите элемент на форме и перетащите рамку размещаемого элемента управления, добившись требуемого размера.

Описанные шаги можно произвести для любого элемента управления, который требуется использовать в диалоговом окне, будь то список или кнопка. Если необходимо изменить размеры объекта, выберите его, а затем перетащите маркер изменения размеров. Элементы, размещенные на форме, можно удалять, копировать, вырезать, вставлять в новую позицию.

Панель инструментов Элементы управления (рис. 8.2) обычно содержит следующие кнопки:






  • Выбор объектов.



  • Надпись.



  • Поле.
  • Поле со списком.



  • Список.
  • Флажок.



  • Переключатель.
  • Выключатель.



  • Рамка.
  • Кнопка.



  • Набор вкладок.
  • Набор страниц.



  • Полоса прокрутки.
  • Счетчик.



  • Рисунок.
  • RefEdit
























































выбор объектов



надпись

текстовое поле

поле со списком

список

флажок

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

выключатель

рамка

кнопка

набор вкладок

набор страниц

полоса прокрутки

счетчик

рисунок






Рис. 8.2  Панель «Элементы управления»

При необходимости набор элементов на панели инструментов Элементы управления может быть изменен. Одни элементы могут быть удалены, а другие добавлены. Например, можно добавить:
  • Свойства элементов управления.
  • Текст программы.
  • Сетка привязки.
  • Запуск окна диалога



8.2.2.1 Поле (TextBox)


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

По умолчанию поля имеют имена TextBoxl, TextBox2 и т.д.

Рекомендуется сразу после создания элементов управления присваивать им имена. Чтобы переименовать элемент управления:
  1. Выберите элемент управления.
  2. Выделите в окне свойств поле Имя (Name).
  3. Введите новое имя элемента управления.
  4. Нажмите клавишу <Enter>, чтобы сохранить имя.


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

TxtИмяОбъекта

Например, txtAge  название поля, в которое вводится возраст, a txtFistName  название поля, в которое вводится фамилия.

Для установки и получения содержимого поля используется свойство Value. Это свойство имеет тип Variant.

Например, установка значения свойства поля txtFistName имеет вид:

TxtMyFirstName.Vаlue = "Петров" ' в поле заносится

' значение "Петров"

Для получения значения элемента управления TextBox можно использовать следующие инструкции:

Dim varFirstName As Variant

varFirstName = txtFirstName.Value

Если нужно запретить изменение содержимого поля (например, объект TextBox применяется для отображения доступной только для чтения информации, такой, как имена файлов), следует «отключить» поле с помощью свойства Enabled, установив его равным значению False. Если значение свойства равно True, то изменение содержимого поля разрешено.

TxtMyFirstName.Enabled = False

Для получения выделенного в поле текста (с помощью мыши или стрелок управления курсором при нажатой клавише Shift) используется свойство SelText. Например:

Dim varSelected As Variant

varSelected = txtMyFirstName.SelText

Кроме получения выбранного в поле текста можно установить его в программе с помощью свойств SelStart и SelLength элемента TextBox.

Рассмотрим следующий пример, в котором выделим слово «был» в поле TxtMyControl с помощью рассмотренных выше свойств:

Dim VarText As Text

VarText = "У Петрова был экзамен"

TxtMyControl.Value = VarText

TxtMyControl.SelStart=11

TxtMyControl.SelLength = 3

Для автоматической установки размеров поля используется свойство AutiSize. Если значение этого свойства равно True, то ширина поля автоматически уменьшается или увеличивается в зависимости от числа находящихся в нем символов.

Инструкция может быть записана следующим образом:

TxtMyControl.AutoSize = True

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

8.2.2.2 Надпись (Label)



Элемент управления Label предназначен для вывода текста в форме, например, для вывода заголовка для тех элементов управления, у которых отсутствует собственное свойство Caption. В качестве примера таких элементов можно назвать поле или рисунок в форме. В этом случае надпись находится около этого элемента управления, указывая его назначение.

Для задания текста надписи можно использовать свойство Caption. Например:

TxtMyAdress.Caption="Адрес"

По умолчанию надписи имеют имена Label1, Label2 и т.д.

8.2.2.3 Кнопка (CommandButton)



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

По умолчанию кнопкам присваиваются имена CommandButton1, CommandButton2 и т.д. Для изменения имени кнопки откройте окно свойств и введите новое имя в поле Имя (Name).

Можно задать текст, который будет выводиться на кнопке вместо установленного по умолчанию значения Command-Button_n (где n – порядковый номер данной кнопки в общем списке кнопок в соответствии с очередностью их создания). Для этого установите новое значение свойства Caption. Например:

CbMyButton.Caption="Моя новая программа"

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

Dim Str_My_Button_Caption As String

Str_My_Button_Caption = CbMyButton.Caption

Можно задать автоматическое изменение размеров элемента управления CommandButton с помощью свойства AutoSize. Если установлено значение этого свойства, равное True, то весь текст надписи, заданный свойством Caption, будет умещаться на кнопке. Например:

CbMyButton.AutoSize=True

Если в форме имеется несколько кнопок, то одну из них можно назначить применяемой по умолчанию. Например, при выводе окна сообщений, в котором содержится запрос на подтверждение удаления данных, кнопка Да обычно задана по умолчанию. Если по ошибке нажать клавишу «Пробел» или Enter, то вся информация будет уничтожена. Поэтому нужно назначить применяемой по умолчанию кнопку Нет. Для того чтобы назначить кнопку по умолчанию, нужно присвоить значение True ее свойству Default. Тогда свойству Default остальных кнопок формы автоматически будет присвоено значение False. Например:

CbMyButton.Default=True

С нажатием кнопки можно связать выполнение некоторого действия, если назначить эту кнопку некоторому событию Нажатие кнопки (Click). Процедура обработки события Click не имеет параметров. Например, следующая процедура обработки события выводит в окне отладки Debug сообщение «Моя новая программа», после того как нажата кнопка CommandButtonl.

Private Sub CbMyButton_Click()

Debug.Print "Моя новая программа"

End Sub

Можно изменить состояние кнопки: запретить пользователю нажатие кнопки, если оно приведет к опасным или нежелательным последствиям. Например, можно отключить кнопку печати, пока не выбран принтер. При запрете доступа кнопка выглядит серой. Для отключения объекта используется значение False свойства Enabled.

Например, процедура запрета печати, пока не выбран принтер, имеет вид:

Public Sub CheckPrinter()

If PrinterNotReady() Then

cbPrinter.Enabled = False

GetPrinterReady()

End If

End Sub


8.2.2.4 Список (ListBox)


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

По умолчанию списки имеют имена ListBox1, ListBox2 и т.д.

Существуют следующие варианты выбора элементов в списке (табл. 8.1):
  • один элемент,
  • несколько последовательно расположенных элементов,
  • несколько произвольно расположенных элементов.


Таблица 8.1  Варианты выбора элементов в списке


Вариант

Значение

Константа

1

0

FmMultiSelect

2

1

FmMultiSelectExtended

3

2

FmMultiSelectMulti


Способ выбора элементов в списке определяется свойством MultiSelect, значение которого можно задать в окне свойств или в программе.

Например, следующая инструкция позволяет выделить в списке несколько последовательно расположенных элементов:

ListBox1.MultiSelect = fmMultiSelectExtended

Для добавления новых элементов в список используется метод AddItem. При этом нужно задать параметр, который определяет строку с названием добавляемого в список элемента:

ListBox1.AddItem элемент

В следующей процедуре метод AddItem добавляет в список названия месяцев года:

Public Sub Months()

ListBox1.AddItem "Январь"

ListBox1.AddItem "Февраль"

...

ListBox1.AddItem "Декабрь"

End Sub

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

Public Sub Number-List ()

For i = 1 To 20

ListBox1.AddItem "Номер элемента:"+str$(i)

Next i

End Sub

Пусть в программе требуется определить выбранные элементы списка. Если в списке задан выбор только одного элемента, то свойство Text элемента управления ListBox содержит выделенный элемент, в противном случае свойство Text равно пустой строке. Свойство ListIndex содержит номер выделенного пункта в списке. Выбранный в списке элемент можно вывести, например, в окне отладки Debug с помощью инструкции:

Debug.Print ListBox1.Text

Если известно, что в списке выделено несколько элементов, то необходимо проверить каждый пункт списка, чтобы определить, выделен он или нет. Для этого используется свойство Selected, которое по индексу пункта возвращает значение True, если пункт выбран, и значение False – в противном случае.

Свойство ListCount содержит общее количество элементов (пунктов) в списке. При этом первый элемент имеет номер «0», а последний – (ListCount – 1).

Свойство возвращает по номеру пункта его текст.

Для удаления элемента из списка используется метод RemoveItem, при этом в качестве параметра метода указывается номер удаляемого пункта.

Например, для очистки списка может использоваться сле­дующая процедура:

Public Sub NumberList()

For i = 0 to (ListBox1.ListCount-1)

ListBox.Remove Item i

Next i

End Sub

8.2.2.5 Поле со списком (ComboBox)



Если используется поле со списком, то необходимый элемент можно выбрать из списка или ввести вручную. Текущее значение в элементе управления ComboBox отображается в поле, а список возможных значений выводится при нажатии кнопки со стрелкой. Элемент управления ComboBox отличается от элемента управления ListBox тем, что в нем можно явно выделить требуемое значение.

Существует два типа полей со списком.

С помощью объектов первого типа можно ввести в поле данные, которые затем можно использовать как:
  • критерий выбора элементов в списке; например, если список содержит названия месяцев года и вводится слово «Май», то осуществляется перемещение на этот пункт списка; при этом используются свойства MatchEntry и MatchRequired;
  • новое значение; например, для задания новой величины масштаба изображения; таким образом, в программе должен быть предусмотрен случай, когда введенного значения нет в списке.

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

Тип объекта ComboBox можно указать с помощью свойства Style (табл. 8.2).


Таблица 8.2  Типы элемента управления ComboBox


Тип

Значение

Константа

Ввод данных

0

FmStyleDropDownCombo

Выбор значения из списка

2

FmStyleDropDownList


Для заполнения поля со списком применяется метод AddItem.

Для получения значения, содержащегося в поле элемента управления ComboBox, можно использовать свойства Value и Text.

Например, два следующих оператора выполняют одно и то же действие – выводят в окне отладки Debug текст, содержащийся в поле элемента управления ComboBox:

Debug.Print ComboBox1.Value

Debug.Print ComboBox1.Text

При присвоении значения свойству Text автоматически выполняются следующие действия:
  • заданный текст выводится в поле элемента управления ComboBox (если заданный текст не является элементом списка, то выдается сообщение об ошибке);
  • свойству ListIndex элемента ComboBox присваивается индекс элемента списка, соответствующего заданному значению.

8.2.2.6 Флажок (CheckBox)



Элемент управления CheckBox создает ячейку («маленький квадрат»), которая может быть помечена пользователем как имеющая значение True или False. С флажком можно связать некоторый заголовок. Если этот квадрат пуст, то при щелчке по нему в нем появляется галочка, и, наоборот, если квадрат был помечен галочкой, то при щелчке по нему галочка исчезает.

Если флажок установлен, то свойство Value элемента управления CheckBox имеет значение True.

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

Элемент управления CheckBox может иметь три состояния:
  • Ложь (False),
  • Истина (True),
  • не Ложь и не Истина (Null).

По умолчанию флажки имеют имена: CheckBox1, CheckВох2 и т.д. С помощью свойства Name можно присвоить флажку новое имя. Свойство Caption позволяет установить текст, который будет появляться рядом с элементом управления CheckBox. Если заголовок флажка очень длинный, то можно разместить его в нескольких строках, присвоив свойству WordWrap значение True.

Описать работу элемента управления CheckBox можно с помощью следующих инструкций:

Public Sub CheckBox1_Click()

If CheckBox1.Value=True Then

' инструкции 1

else

'инструкции 2

End If

End Sub

8.2.2.7 Переключатель (OptionButton)



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

По умолчанию переключатели имеют имена OptionButton1, OptionButton2 и т.д.

Группировка переключателей может быть выполнена двумя способами:
  • С помощью элемента управления Рамка ( Frame). Все объекты управления OptionButton, расположенные в одной рамке, рассматриваются как члены одной группы. Для каждого набора переключателей должна использоваться своя рамка.
  • С помощью свойства для группировки объектов – GroupName. При выборе элемента управления OptionButton отменяется выбор всех переключателей, значение свойства GroupName которых совпадает со значением того же свойства выделенного элемента управления OptionButton. При использовании свойства GroupName отпадает необходимость в создании элемента управления Frame. Свойство GroupName может быть установлено как в окне свойств, так и в программе.

Свойство Value выбранного переключателя имеет значение True.

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

Public Sub CheckOptionButton()

If OptionButton1.Value Then

' инструкции 1

Elself OptionButton2.Value Then

' инструкции 2

Elself OptionButton3.Value Then

' инструкции 3

End If

End Sub

8.2.2.8 Рамка (Frame)



Элемент управления Frame предназначен для группирования элементов в форме. По умолчанию рамки имеют имена Frame1, Frame2 и т.д. Установить новое значение имени рамки можно с помощью свойства Name. Свойство Caption определяет текст, который появляется вверху рамки. Например:

Frame1. Сарtioп = "Варианты заданий"

8.2.2.9 Счетчик (SpinButton)



Одновременно с элементом управления SpinButton (Счетчик) необходимо создать элемент управления TextBox (Поле), значение которого будет меняться с помощью этого счетчика.

Можно изменять размеры счетчика SpinButton в форме, растянув его границы. Также можно изменить направление стрелок на элементе управления SpinButton (с вертикального на горизонтальное), изменив пропорции счетчика.

При нажатии кнопок счетчика возникают события:

Private Sub SpinButton1_SpinUp()



End Sub

и

Private Sub SpinButton1_SpinDown()



End Sub


События SpinUp (Вверх), SpinDown (Вниз) предназначены для изменения значения в связанном со счетчиком элементе управления.

Свойство Value счетчика автоматически изменяется при нажатии на кнопку.

Процедуры, в которых при нажатии кнопки счетчика присваивается значение связанному со счетчиком объекту (полю TextBox), могут быть записаны как

Private Sub SpinButton1_SpinUp()

TextBox1.Value = SpinButton1.Value

End Sub


и

Private Sub SpinButtonl_SpinDown()

TextBoxl.Value= SpinButtonl.Value

End Sub

Элемент управления SpinButton имеет три свойства, которые используются при изменении его значения:
  • Мах – определяет максимальное значение элемента управления SpinButton;
  • Min – определяет минимальное значение элемента управления SpinButton;
  • Value – определяет текущее значение элемента управления SpinButton, изменяется при нажатии кнопки счетчика.

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

8.2.2.10 Выключатель (ToggleButton)



Элемент управления ToggleButton создает кнопку с двумя состояниями: Включено и Выключено. Внешне выключатель напоминает кнопку, однако щелчок по выключателю меняет его состояние, и этим он похож на флажок. Свойство Value элемента ToggleButton может принимать одно из трех значений: True, False, Null.

Работа переключателя может быть описана с помощью следующих процедур:

Public Sub ToggleButton1_Click()

If ToggleButton1.Value then

' операторы 1

else

' операторы 2

End If

End Sub

Public Sub My_Work()

Work_project(ToggleButton1.Value)

End Sub


Также можно поместить в форму полосу прокрутки ScrollBar и набор вкладок TabStrip.

Форма может включать произвольное количество элементов управления. На рис. 8.2 показано завершенное диалоговое окно.





Рис. 8.2  Пример диалогового окна


8.2.3 Пример: инициализация значений элементов управления



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

В данной процедуре необходимо установить значения свойства Теxt для всех полей диалогового окна. В простейшем случае требуется ввести элементы управления Пустые строки. Кроме того, можно задать значение свойства Value для переключателей или флажков. И, наконец, если имеется значение по умолчанию для объектов со списками, требуется указать значение свойства Listlndex для этих элементов управления. Приведем пример процедуры инициализации (рис. 8.3).





Рис. 8.3  Результат выполнения процедуры инициализации


271




Private Sub UserForm_Initialize()

'Инициализация каждого поля пустой строкой.

txtExpAmount.Text = "" ' Поле Сумма

txtExpDescription.Text = "" ' Поле Описание

' Инициализация списка Статья расходов

drpExpCategory.AddItem "Покупка"

drpExpCategory.AddItem "Погрузка"

drpExpCategory.AddItem "Отправка"

drpExpCategory.AddItem "Перевозка"

With frmExpense

.txtExpDate.Text = Format(Now(),"mm/dd/yy") ' Поле Дата

.drpExpCategory.Listlndex = 2 'Список Статья расходов

End With

End Sub

8.2.4 Отображение диалоговых окон


Для отображения формы используется метод Show. Его выполнение можно связать с командой меню, кнопкой панели инструментов или кнопкой в форме. Синтаксис данного метода является следующим:

Form_object.Show

Параметр Form_object – имя отображаемой формы. Приведем пример использования метода Show. Следующая процедура связана с нажатием кнопки, размещенной на рабочем листе:

Sub CmdAddExpense_Click()

frmExpense.Show

End Sub

8.2.5 Пример: проверка условий на значение полученных данных из формы



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

Если введенные данные правильны, требуется сохранить их и скрыть диалоговое окно. В противном случае, необходимо вывести сообщение и передать фокус объекту, содержащему недопустимую информацию. Рекомендуется связать проверку условий на значение с нажатием кнопки ОК. 3акончив ввод, пользователь нажимает клавишу <Enter> или кнопку ОК. Если кнопке назначена подпрограмма проверки данных, то необходимо присвоить значение True свойству Default этой кнопки. Таким образом, можно задать запуск процедуры обработки события Click, если пользователь нажимает клавишу <Enter>.

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





Рис 8.5  Сообщение о вводе неправильной информации


После ввода требуется сохранить данные. Обычно для этого требуется присвоить значение, содержащееся в элементе управления, свойству Value требуемого диапазона. Информация, введенная в поле, хранится в свойстве Text, значения переключателей, списков и флажков – в свойстве Value. Кроме того, может потребоваться сохранить в диапазоне вместо значений флажков строки, например, «Да» или «Нет». При этом следует воспользоваться инструкцией If. Необходимо отметить, что если занести в диапазон значение свойства Value, то записывается значение типа Boolean. Приведем пример сохранения на рабочем листе Excel введенных в форму данных:

Private Sub cmdExpOK_Click()

If txtExpDescription.Text = "" Then

MsgBox "Введите описание."

'Метод SetFocus используется для передачи фокуса

'указанному объекту.

txtExpDescription. SetFocus

Else

'Необходимо создать новую строку, чтобы

'ввести в нее данные.

Worksheets("Лист1").Range("A6").EntireRow.Insert


'Сохранение значений элементов управления формы

'на рабочем листе

Worksheets("Лист1").Range("A6").Value = drpExpCategory

Worksheets("Лист1"). Range("B6").Value = _

txtExpDescription.Text


273

Worksheets("Лист1").Range("C6").Value = txtExpAmount.Text

Worksheets("Лист1").Range("D6").Value = txtExpDate.Text


'Скрытие формы.

frmExpense.Hide

End If

End Sub


Обратите внимание, что после сохранения данных выполняется скрытие формы с помощью метода Hide.

Теперь необходимо написать процедуру обработки события Cancel кнопки Отмена. Обратите внимание, что следует присвоить значение True свойству Cancel данной кнопки, чтобы событие Cancel возникало как при щелчке по кнопке Отмена, так и при нажатии клавиши <Esc>. Чтобы скрыть форму, требуется только одна строка:

Private Sub cmdExpCancel_Click()

frmExpense.Hide

End Sub