![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 28.05.2009
Сообщений: 43
|
![]() |
![]() |
![]() |
![]() |
#12 |
Новичок
Джуниор
Регистрация: 27.04.2010
Сообщений: 1
|
![]()
Здравствуйте!
Может быть кому-то пригодится найденное мною решение на форумах и немного доработанное... Но... Сразу спешу предупредить, что все же один недочет остаётся: стрелки на клавиатуре вверх и вниз будут приводить к попаданию в комбу первого значения из списка. Но, если приучить пользователей выбирать необходимый вариант мышкой - механизм вполне срабатывает. Public client, rez, p As Boolean, r, nf& ----------------------------------------- Private Sub UserForm_Initialize() ' при открытии формы загружаем в комбу необходимый список client = Sheets("Клиенты").[Клиенты] With cb .List = client End With End Sub ----------------------------------------- Private Sub cb_Change() Dim s, r&, n& client = Sheets("Клиенты").[Клиенты] Application.ScreenUpdating = True If cb.Text = "" Then cb.List = client s = UCase(cb.Text) a = Len(s) If a = 0 Then GoTo finishSub rez = Application.Transpose(client) ' копируем весь массив в rez nf = UBound(client) For Each s In Split(s, "") For r = 1 To nf 'бежим по массиву rez , ищем вхождения If UCase(rez(r)) Like "*" & s & "*" Then n = n + 1 rez(n) = rez(r) ' если есть вхождение, то записываем его в rez же, затирая ненужную информацию End If Next If n > 0 Then nf = n n = 0 Else Exit For End If Next If nf = 0 Then nf = 1 ReDim Preserve rez(1 To nf) Application.EnableEvents = False With cb .MatchEntry = 2 .List = rez ' заносим найденное в комбо .AutoWordSelect = True .AutoSize = False .DropDown ' распахиваем комбо End With finishSub: Application.EnableEvents = True End Sub ----------------------------------------- Private Sub CmdButt_AddNewNote_Click() ' при нажатии на кнопку, к примеру, добавление новой записи в отчет ' загружаем в комбу ПОЛНЫЙ первоначальный список client = Sheets("Клиенты").[Клиенты] With cb .List = client End With ' запоминаем индекс списка и прибаляем - если надо - количество строк ' смещения нахождения нашего списка на листе источнике b = (cb.ListIndex + 1) + 2 ' фиксируем необходимое значение из листа источника с = Sheets("Клиенты").Cells(b, 9).Value 'вставляем, куда требуется ActiveCell.Value = с End Sub |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
выпадающий список ComboBox | pu4koff | Win Api | 29 | 27.02.2014 17:23 |
Как в Combobox убрать список? | Alexi | Компоненты Delphi | 10 | 04.01.2011 08:25 |
ComboBox как сделать чтобы список в нем формировался с другой страницы? | sttafi | Microsoft Office Excel | 11 | 12.05.2009 17:45 |
Потестируйте программу (поиск похожих MP3 файлов) | mutabor | Софт | 9 | 28.10.2008 14:01 |