Всем привет! В очередной раз обращаюсь к Гуру и Знатокам. Один из лучших форумов по Excel. Спасибо создателям и активным участникам! Есть вопрос.. Создал UserForm в ней есть Combobox, как реализовать поиск по мере ввода?
Всем привет! В очередной раз обращаюсь к Гуру и Знатокам. Один из лучших форумов по Excel. Спасибо создателям и активным участникам! Есть вопрос.. Создал UserForm в ней есть Combobox, как реализовать поиск по мере ввода?RomanCompass
Вот фаил Кто может помочь ,пожалуйста напишите код в одном из Combobox . Дальше уже разберусь . Я новичок, так будет проще когда кто-то тыкнет носом .
Вот фаил Кто может помочь ,пожалуйста напишите код в одном из Combobox . Дальше уже разберусь . Я новичок, так будет проще когда кто-то тыкнет носом .RomanCompass
Исправления: 1. Для возможности использования ADODB.Recordset добавил библиотеку Microsoft Activex Data Objects 2.8 Library 2. Добавил глобальную переменную [vba]
Код
Private cmbSource As New ADODB.Recordset
[/vba] 3. В процедуре UserForm_Initialize() изменил [vba]
Код
'ComboBox_model.MatchEntry = fmMatchEntryFirstLetter 'With Лист2 ' s = .Cells(Rows.Count, 4).End(xlUp).Row ' ComboBox_model.List = .Range(.Cells(2, 4), .Cells(s, 4)).Value 'End With
Исправления: 1. Для возможности использования ADODB.Recordset добавил библиотеку Microsoft Activex Data Objects 2.8 Library 2. Добавил глобальную переменную [vba]
Код
Private cmbSource As New ADODB.Recordset
[/vba] 3. В процедуре UserForm_Initialize() изменил [vba]
Код
'ComboBox_model.MatchEntry = fmMatchEntryFirstLetter 'With Лист2 ' s = .Cells(Rows.Count, 4).End(xlUp).Row ' ComboBox_model.List = .Range(.Cells(2, 4), .Cells(s, 4)).Value 'End With
Erjoma1981, Пытаюсь по вашему сценарию сделать для ComboBox_coutry и что-то не получается .
Беру копирую ваш код процедуры UserForm_Initialize() С ней меняю имя ComboBox_coutry Меняю Range столбец на 8 и тоже самое с Беру копирую ваш код процедуры ComboBox_model_Change() С ней меняю имя ComboBox_coutry Меняю Range столбец на 8
И ЧТО-ТО СОВСЕМ НЕ ПОЛУЧАЕТСЯ
Erjoma1981, Пытаюсь по вашему сценарию сделать для ComboBox_coutry и что-то не получается .
Беру копирую ваш код процедуры UserForm_Initialize() С ней меняю имя ComboBox_coutry Меняю Range столбец на 8 и тоже самое с Беру копирую ваш код процедуры ComboBox_model_Change() С ней меняю имя ComboBox_coutry Меняю Range столбец на 8
Private Sub ComboBox_coutry_Change() Dim ar, x, ar1 ar = Range("Таблица4").Value x = ComboBox_coutry.Value ReDim ar1(0) For i = 1 To UBound(ar) If InStr(1, ar(i, 1), x, 1) = 1 Then ReDim Preserve ar1(k) ar1(k) = ar(i, 1) k = k + 1 End If Next ComboBox_coutry.List = ar1 ComboBox_coutry.DropDown End Sub
[/vba] И не забудьте удалить весть код из UserForm_Initialize(). От него никакой пользы, окромя вреда.
[vba]
Код
Private Sub ComboBox_coutry_Change() Dim ar, x, ar1 ar = Range("Таблица4").Value x = ComboBox_coutry.Value ReDim ar1(0) For i = 1 To UBound(ar) If InStr(1, ar(i, 1), x, 1) = 1 Then ReDim Preserve ar1(k) ar1(k) = ar(i, 1) k = k + 1 End If Next ComboBox_coutry.List = ar1 ComboBox_coutry.DropDown End Sub
[/vba] И не забудьте удалить весть код из UserForm_Initialize(). От него никакой пользы, окромя вреда.RAN
Erjoma1981 , огромное спасибо за помощь ! Ваш первый вариант Public 1 и Public 2 лучше . В них есть поиск по любому совпадению и еще при совпадение нескольких элементов выбор стрелкой вниз . В последнем же варианте не работает совпадение по любому символу и нет возможности выбрать стрелкой из нескольких похожий элементов .
Erjoma1981 , огромное спасибо за помощь ! Ваш первый вариант Public 1 и Public 2 лучше . В них есть поиск по любому совпадению и еще при совпадение нескольких элементов выбор стрелкой вниз . В последнем же варианте не работает совпадение по любому символу и нет возможности выбрать стрелкой из нескольких похожий элементов .RomanCompass
В принципе меня пока что все устраивает , все таки подумываю об... Как сделать чтобы при наборе нескольких символов и полном совпадение элемента (то есть к примеру набрал Au или Rus Чтобы варианты Austria или Russia заполнялись в combobox так как другие варианты не совпадает. Можно ли так сделать ?
В принципе меня пока что все устраивает , все таки подумываю об... Как сделать чтобы при наборе нескольких символов и полном совпадение элемента (то есть к примеру набрал Au или Rus Чтобы варианты Austria или Russia заполнялись в combobox так как другие варианты не совпадает. Можно ли так сделать ?RomanCompass
Erjoma1981 , огромное спасибо за помощь ! Ваш первый вариант Public 1 и Public 2 лучше . В них есть поиск по любому совпадению и еще при совпадение нескольких элементов выбор стрелкой вниз . В последнем же варианте не работает совпадение по любому символу и нет возможности выбрать стрелкой из нескольких похожий элементов .
В последнем варианте все завязано на условии [vba]
Erjoma1981 , огромное спасибо за помощь ! Ваш первый вариант Public 1 и Public 2 лучше . В них есть поиск по любому совпадению и еще при совпадение нескольких элементов выбор стрелкой вниз . В последнем же варианте не работает совпадение по любому символу и нет возможности выбрать стрелкой из нескольких похожий элементов .
В последнем варианте все завязано на условии [vba]
Код
If InStr(1, ar(i, 1), x, 1) = 1 Then
[/vba]. Если его изменить [vba]
Код
If InStr(1, ar(i, 1), x, 1)>0 Then
[/vba], то будет так же как в первых двух.Erjoma1981
Как сделать чтобы при наборе нескольких символов и полном совпадение элемента (то есть к примеру набрал Au или Rus Чтобы варианты Austria или Russia заполнялись в combobox так как другие варианты не совпадает. Можно ли так сделать ?
Можно. Количество отобранных это RecordCount в первых двух примерах, k в последнем.
Как сделать чтобы при наборе нескольких символов и полном совпадение элемента (то есть к примеру набрал Au или Rus Чтобы варианты Austria или Russia заполнялись в combobox так как другие варианты не совпадает. Можно ли так сделать ?
Можно. Количество отобранных это RecordCount в первых двух примерах, k в последнем.Erjoma1981
Сообщение отредактировал Erjoma1981 - Четверг, 23.09.2021, 21:20
Erjoma1981, Дружище спасибо ! Автозаполнение работает по совпадаемым символам ,но есть один минус... если к примеру набрал символы Bela ,автозаполнение по совпадению сработало - Belarus . И тут видишь что ошибся последний символ набрал bel-А ,вместо bel-G (BELGIUM). Так вот в таком случае нет возможности BACKSPACE ← стереть несколько символов . ПРИХОДИТЬСЯ БОАТЬ МЫШКУ В РУКИ ВЫДЕЛЯТЬ ВЕСЬ ТЕКСТ И ТОЛКО ТАК УДОЛАТЬ . Как бы не удобно это
Erjoma1981, Дружище спасибо ! Автозаполнение работает по совпадаемым символам ,но есть один минус... если к примеру набрал символы Bela ,автозаполнение по совпадению сработало - Belarus . И тут видишь что ошибся последний символ набрал bel-А ,вместо bel-G (BELGIUM). Так вот в таком случае нет возможности BACKSPACE ← стереть несколько символов . ПРИХОДИТЬСЯ БОАТЬ МЫШКУ В РУКИ ВЫДЕЛЯТЬ ВЕСЬ ТЕКСТ И ТОЛКО ТАК УДОЛАТЬ . Как бы не удобно это RomanCompass