Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание формы с ComboBox и ListBox

Поиск

 

Откроем новый рабочий лист Excel. Перейдем в редактор Visual Basic (Alt+F11) и выберем в меню «Вставка» команду UserForm. В появившейся диалоговой форме разместим два элемента управления ComboBox (Поле со списком) и один элемента управления ListBox (Список). Добавим к этим элементам надписи (Label) «Компания», «Адрес» и «Контактный телефон» соответственно. Также добавим кнопки с названиями ОК и Close (Рисунок 5.6).

 

Создадим процедуру отклика кнопки Close, которая закрывала бы уже открытую форму. Для этого два раза щелкнем по кнопке и запишем в окне редактирования кода следующее:

 

Private Sub CommandButton2_Click()

Me.Hide

End Sub

 

Рисунок 5.6 — Форма UserForm3 с размещенными

 

на ней элементами управления


На рабочем листе в ячейках А1, В1 и С1 напишем заголовки «Компания», «Город» и «Телефон», а ниже введем 9 соответствующих значений (название компании, местонахождение и контактный телефон).

 

Затем выделив поочередно массивы этих значений и выбрав в контекстном меню команду Присвоить имя … или вызвав Диспетчер имен (Ctrl+F3),зададим массивам имена соответственно «Company», «City» и «Tel» (Рисунок 5.7).

 

Рисунок 5.7 — Присвоение имен группам ячеек на листе Excel

 

Свяжем эти ячейки с элементами управления ComboBox1 и ComboBox2 формы UserForm3. Для этого в их Свойствах укажем в поле RowSource имя соответствующего массива ячеек («Company» и «City»).

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

в окнах Компания и Адрес соответствующие значения и нажимает на ОК. Если компания находится по этому адресу, то в окне Контактный телефон появляется ее номер телефона,если нет,то появляется информационное сообщение о том, что такой компании не существует.

 

Для этого два раза щелкнем по кнопке ОК в форме User-Form3 в редактореVBAи запишем в окне редактирования следующий код

 

 

Private Sub CommandButton1_Click()

'Очистить поле ListBox

 

Me.ListBox1.Clear

flag = 0

' Цикл по строкам столбцов Компания и Адрес и проверка того,

 

' соответствуют ли введенные (или выбранные) компании и их адреса

' без учета пробелов в именах (функция Trim) тому, что записано в таблице.

 

' Если совпадение, то в ListBox заносится соответствующий номер телефона

 

For i = 1 To 9

 

If Trim(ComboBox1.Text) = Cells(i + 1, 1) And _ Trim(ComboBox2.Text) = Cells(i + 1, 2) Then

 

Me.ListBox1.AddItem Cells(i + 1, 3)

flag = 1

End If

 

Next i

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

If flag = 0 Then

MsgBox " Компании " + Trim(ComboBox1.Text) + _ " в городе " + Trim(ComboBox2.Text) + " нет! "

End If

End Sub

 

Теперь создадим макрос запуска нашей формы (переименуем ее в Поиск контактного телефона). Для этого в новом модуле «Module3» вставим процедуру:

 

Public Sub Find()

 

With UserForm3

Show

End With

End Sub

 

Затем создадим на листе Excel кнопку Найти и назначим этой кнопке макрос Find.

 

Протестируем работу макросов (Рисунок 5.8, 5.9).

 

 

Рисунок 5.8 — Положительный результат поиска

 

 

 
Рисунок 5.9 — Отрицательный результат поиска  

 

 





Поделиться:


Последнее изменение этой страницы: 2020-11-11; просмотров: 357; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.36.130 (0.006 с.)