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


Еще раз о "переиспользовании" модулей - часть 2


Направление переноса задают командные кнопки. Знак на кнопке меняется в зависимости от того, какой из списков выбран - левый или правый. Кнопка "OK" на форме переносит данные из списка на лист Excel, кнопка "Cancel" завершает работу с формой без переноса данных.

Работу обработчиков событий, возникающих при работе с объектами формы, можно было бы без сомнения полностью описать в модуле, связанном с формой. Но мы поступили по-иному и создали стандартный модуль с именем ToolsMod, в который и вынесли содержательную часть обработки. Так что у нас появилось два модуля, - в одном находятся обработчики события, в другом - стандартном сосредоточен содержательный код, выполняющий обработку. Вот код модуля TwoLists, связанного с нашей формой, и содержащий обработчики событий:

Option Explicit

Private Sub CommandButton1_Click() 'Обработчик события Click кнопки "> <" 'Выборочный обмен данными между n- колоночными списками: 'ListBox1 <--> ListBox2

If CommandButton1.Caption = ">" Then Call MoveSelectedItems(ListBox1.ColumnCount, ListBox1, ListBox2) Else Call MoveSelectedItems(ListBox2.ColumnCount, ListBox2, ListBox1) End If End Sub

Private Sub CommandButton2_Click() 'Обработчик события Click кнопки ">> <<" 'Перенос всех данных из одного n-колоночного списка 'в конец другого, возможно, не пустого списка: ListBox1 <--> ListBox2

If CommandButton2.Caption = ">>" Then Call MoveAllItems(ListBox1.ColumnCount, ListBox1, ListBox2) Else Call MoveAllItems(ListBox2.ColumnCount, ListBox2, ListBox1) End If End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Обработчик события DblClick левого списка ListBox1 (имеет параметры!) 'При двойном щелчке выбранный элемент одного n-колоночного списка 'переносится в конец другого списка

Call MoveSelectedItems(ListBox1.ColumnCount, ListBox1, ListBox2) End Sub

Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Обработчик события DblClick правого списка ListBox2 'При двойном щелчке выбранный элемент одного n-колоночного списка 'переносится в конец другого списка




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