Страницы: 1
RSS
Выбор значений из списка с поиском по первым буквам
 
Добрый день. Начну с того, что поиском пользовался, темы с выпадающими списками смотрел. Но решения не нашел.
Задача - есть анкета для заказа товаров, но заказать можно только из определенного списка. С помощью проверки данных и выпадающего списка решается вопрос, но там нет поиска по первым буквам. Видел решение с вставкой отдельного элемента, но мне нужно потом работать с этим списком, и вставлять 100 таких элементов не улыбается.
 
Добрый. Посмотрите тут, вдруг это то, что нужно?
Кому решение нужно - тот пример и рисует.
 
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns(2)) Is Nothing Then
    If Target.Cells.Count = 1 Then
        Dim s As String
        s = Target.Value
        Dim y As Long
        Dim a As Variant
        With Sheets("ДОГОВОР")
            y = .Cells(Rows.Count, 3).End(xlUp).Row
            a = .Range(.Cells(2, 2), .Cells(y, 3))
        End With
        Application.EnableEvents = False
            Range(Target, Cells(Rows.Count, Target.Column + 1)).ClearContents
            Dim i As Long
            i = 1
            For y = 1 To UBound(a, 1)
                If Left(a(y, 2), Len(s)) = s Then
                    Target.Cells(i, 1).Value = a(y, 2)
                    Target.Cells(i, 2).Value = a(y, 1)
                    i = i + 1
                End If
            Next
        Application.EnableEvents = True
    End If
    End If
End Sub
В модуль листа ЗАКАЗ. Совпадающие варианты будут выводиться в текущую строку и ниже. Таким образом, есть ограничение - заполнять нужно сверху вниз.
 
Цитата
Anzic написал:
Видел решение с вставкой отдельного элемента, но мне нужно потом работать с этим списком, и вставлять 100 таких элементов не улыбается.
А нежно "вставлять" 100 - используйте один, вызывая его в нужном месте.
 
Решение.
 
Думаю это подойдёт
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
skais675, требуется доработка: при активации ячейки любого другого столбца - КомбоБокс прятать.  При активации другой ячейки в пределах столбца С - убирать "следы"  КомбоБокса из "старой" ячейки. ))

Anzic,  плохой пример:если по первым буквам, а у Вас все данные начинаются со слов Блок для записей, то получается, что нужно ввести 18 символов, чтобы ограничить список для вывода нужных значений. Может быть есть смысл искать не первым буквам, а по включению (содержит)? Тогда будет достаточно ввести 2-3 символа. Для приведённых в примере данных At - получим строки только содержащие слово Attache. Или вводим бел - получим все строки, где есть слово белый.
 
Цитата
Юрий М написал:
Может быть есть смысл искать не первым буквам, а по включению (содержит)?
да, так было бы лучше. Согласен, пример не очень удачный, но там 400 позиций, не стал вставлять все. Так есть возможность искать по включению? Как это сделать?
Пытливый, посмотрю, на первый взгляд, вроде должно подойти.
МатросНаЗебре,  спасибо, сейчас посмотрю, подойдет ли.
Юрий М, не совсем понял о чем Вы?
skais675, почти, но как заметил Юрий М  требуется дороботка
Alemox, сейчас гляну.
 
Цитата
Юрий М написал:
Может быть есть смысл искать не первым буквам, а по включению (содержит)?
Цитата
Anzic написал:
да, так было бы лучше.
Цитата
Anzic написал:
Юрий М , не совсем понял о чем Вы?
Говорите, что было бы лучше, но не поняли, о чём я говорю? ))
 
Юрий М,слишком много ответов, не заметил, что это Вы же ))
еще небольшое пожелание, что бы не использовались скрипты. 20 отделов, не думаю, что у всех хватит ума включить их :(.
Изменено: Anzic - 01.11.2019 13:55:06
 
Кто не хочет работать головой, работает руками.
Страницы: 1
Наверх