Основы офисного программирования и язык VBA


Обмен данными с диалоговым окном - часть 3


End Sub

Нам осталось рассмотреть действие новых командных кнопок. Обработчик события Click кнопки Save позволяет сохранить текущее состояние элементов управления формы. Затем это состояние может быть проанализировано, например, для того, чтобы выдать психологический портрет пользователя. Цель сохранения может быть и другая, ѕ иметь возможность вернуться к текущему состоянию при повторном открытии формы. С чисто программистской точки зрения задача сохранения состояния решается просто, главный вопрос это, где и в какой форме хранить состояние элементов управления. В данном случае мы выбрали ячейки листа Excel. Вот текст этого обработчика:

Private Sub cmdSave_Click() 'Сохранение данных формы в ячейках листа SavedData книги BookOne12 Dim Beg As Range Set Beg = Range("[BookOne12.xls]SavedData!Данные") With frmInit Beg.Offset(1, 0) =.CurrDate.Caption 'дата Beg.Offset(1, 1) =.lstColors.ListIndex 'индекс в списке Beg.Offset(1, 2) =.lstColors.Value 'цвет Beg.Offset(1, 3) =.chkGood.Value 'состояние флажка Beg.Offset(1, 4) =.MyText.Text 'текст в окне ввода 'Форма прячется .Hide End With

End Sub

Обратите внимание, при работе с ячейками Excel используется техника, основанная на смещении Offset. Вначале фиксируется начальная ячейка, имеющая имя "Данные", и уже относительно ее выполняются действия над остальными ячейками.

Командная кнопка Reset позволяет восстановить сохраненное состояние элементов управления формы. Обработчик события Click для этой кнопки выполняет действия, обратные тем, что делаются при сохранении состояния. Вот текст этого обработчика:

Private Sub cmdReset_Click() 'Восстановление данных формы из ячеек листа SavedData книги BookOne12 Dim Beg As Range Set Beg = Range("[BookOne12.xls]SavedData!Данные") With frmInit .CurrDate.Caption = Beg.Offset(1, 0) .lstColors.ListIndex = Beg.Offset(1, 1) .lstColors.Value = Beg.Offset(1, 2) .chkGood.Value = Beg.Offset(1, 3) .MyText.Text = Beg.Offset(1, 4) End With End Sub

Обработчик события Click для кнопки Cancel просто закрывает форму без сохранения состояния элементов:

Private Sub cmdCancel_Click() frmInit.Hide End Sub




Начало  Назад  Вперед



Книжный магазин