Добрый вечер! Мучился, мучился, но так и не получилось. В ячейке Е6 (лист - Форма) работает поиск города по вводимым буквам (проверяется по данным на листе Справочники). Помогите, пожалуйста, исправить код в приложенном файле таким образом, чтобы поиск названия города был возможен по вводимым буквам в combobox (cb1) UseForm. Заранее спасибо!
P.S. код в приложенном файле создавал не я, скачал в интернете, но это было давно.
чтобы поиск названия города был возможен по вводимым буквам в combobox (cb1) UseForm
КомбоБокс по умолчанию так и ведёт себя. Осталось только его заполнить. Один из вариантов: удалите/закомментируйте весь код в модуле формы и добавьте туда такой:
Код
Private Sub UserForm_Initialize()
Dim i As Long
With Sheets("Справочники")
For i = 2 To 8
Me.cb1.AddItem .Cells(i, 1)
Next
End With
End Sub
У меня файл не работает пишет почему-то ошибку при открытии (Excel 2010) can't exit design mode because control cannot be created У кого ещё такое было?
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Юрий М пишет: Один из вариантов: удалите/закомментируйте весь код в модуле формы и добавьте туда такой:
Спасибо большое. Но это не то, по факту получается, что мы просто заполняем combobox списком данных. При этом поиск в данном combobox идет по последовательно введенным значениям, в то время как combobox на листе ищет совпадения во всех названиях по введенным значениям. Городов очень много и хотелось бы такой же универсальный поиск перенести на UseForm.
КомбоБокс будет заполнен полностью списком из листа Справочники, но при вводе символов Вам будут предлагаться ТОЛЬКО подходящие. А разве не это Вы просили?
Смотрите, что получается. Есть список городов (в качестве примера он небольшой):
Абакан
Волгоград
Воркута
Иркутск
Калуга
Москва
Новосибирск
Если ввести букву "в" в combox на листе, то ниже появится список из перечисленных городов. А если эту же букву ввести на useform, то будет только Воркута. Волгоград Воркута Москва Новосибирск
Вводим следующую букву и combobox на листе показывает города в которых есть совпадения по двум введенным буквам в любом месте названия города - список городов для выбора уменьшается и т.д.
Юрий М, а сразу в КомбоБокс разве не получится сделать? на листе ведь КомбоБокс отрабатывает. В 1 и 2 модуле первоначального файла есть код, может быть его как-нибудь изменить?
Leanna, да, я когда рыскал по просторам интернета, находил что-то похожее, но в итоге остановился на том варианте, который сейчас не могу переделать на useform.
Добрый вечер! Нашел другой макрос с поиском по вводимым данным. Только единственная проблема в получившемся допустимом списке не получается выбирать значения с использованием стрелки вниз/вверх на клавиатуре. При попытке пройти по подобранному списку с использованием стрелки сразу же принимается первое значение. Помогите, пожалуйста, реализовать возможность выбора строки с использованием стрелки. Спасибо.
Юрий М пишет: Предлагаю вариант с добавлением на форму ТекстБокса: в него вводим символы, а уже по ним заполняется КомбоБокс.
Добрый вечер! Пытался сделать все в Комбобоксе, но не получилось. От безысходности решил воспользоваться Вашим советом и добавил ТекстБокс, но вместо Комбобокса сделал ЛистБокс. Чтобы более менее привести поиск в нормальный вид возникла потребность скрывать ЛистБокс после выбора соответствующего значения из него. Подскажите, пожалуйста, как можно сделать так, чтобы после нажатия клавиши Ентер в ЛистБоксе, он исчезал. Я пробовал сделать переход на ТекстБокс и чтобы потом отработала процедура выхода из ЛистБокса (и он исчез), но не получается. Заранее спасибо.
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
'Call Процедура
UserForm1.Hide
End If
End Sub
Юрий М пишет: Прикрутил костыль)) А почему по Enter, а не по клику скрывать? Это ведь лишняя операция.
Спасибо, большое. Честно - ничего не прикручивал) Решил скрывать по enter, так как пользователь перебирать будет с помощью стрелки. Возникла еще одна маленькая проблема, как сделать так, чтобы выбранный с помощью Enter вариант в ЛистБоксе остался в ТекстБоксе?
Это я прикрутил)) По вопросу: попробуйте вместо выгрузки использовать скрытие, как предлагает Leanna. Или запоминайте значение в переменную и присваивайте при активации формы.
Андрей VG, добрый вечер! Попытался сегодня перенести код в рабочий файл, но появилась ошибка( Попытался банально скопировать листы и форму в новый файл и в новом файле тоже ошибка( Помогите, пожалуйста, разобраться в чем причина. Спасибо!