Страницы: Пред. 1 2 3
RSS
Выпадающий список с возможностью поиска внутри списка
 
Уважаемые форумчане, я всё по тому же сообщению #53. Всё работает прекрасно.
Подскажите пожалуйста, какие изменения нужно внести в код, чтобы поиск производить с таблицы, где результатами являются значения формул?
Код
Private Sub TextBox1_Change()
    Dim X, i, txt As String, lt, s As String
    If Len(TextBox1.Text) = 0 Or bu Then Exit Sub
    txt = TextBox1.Text
    lt = Len(TextBox1.Text)
    X = Sheets("Прайс с поиском").Columns(5).SpecialCells(2).Value
    For i = 1 To Sheets("Прайс с поиском").Cells(Rows.Count, 5).End(xlUp).Row
        If InStr(1, UCase(Sheets("Прайс с поиском").Cells(i, 5)), UCase(TextBox1.Value)) > 0 Then s = s & X(i, 1) & "~" 'формирует по сочетанию букв в любом месте текста
     Next i
    ListBox1.List = Split(s, "~")
   End Sub
 
,может вообще удалить if? Сейчас выглядит странно: Если ячейка пустая и Не пустая.
Тут должно быть "или", ну или вообще не должно быть условия т.к. вы охватываете все варианты и пусто и НЕпусто.
невозможное делаем сразу, чудо - требует небольшой подготовки.
 
phelex, нужны все варианты и пусто и НЕпусто, какие в таком случае нужно внести изменения?
И вот вопрос, сообщение #61, чтобы поиск производить с таблицы, где результатами являются значения формул?
 
Здравствуйте! Подскажите пожалуйста как связать между собой боксы, либо альтернативное решение, задача:
есть список категорий и к каждому списку категорий есть свой список (к примеру категория Томат и список сортов к нему.
по итогу в таблице ввода нужно чтобы можно было вводить категории из всех имеющихся с возможностью поиска по части слова. В соседнем столбце Сорт при вводе из списка значений с возможностью поиска выводился и использовался только список соответствующий указанной Категории.
пример: в столбце таблицы Категория указал Томат, в соседнем столбце использовался список Сортов только Томата.

заранее спасибо!
 
Добрый день. помогите пожалуйста не работает...
сам макрос пытался вставить в лист ЦППН в РМЦ, но постоянно ошибка.
с чем связано не пойму.
Нужно что бы список выпадающий появлялся в ячейках "Ответственный за подготовку" и "Ответственный за проведение" данные для списка на листе "Для работы"
Изменено: borisenko2009 - 06.06.2022 18:24:06
 
А где на листе ТекстБокс и ЛистБокс? Вы же в коде обращаетесь к объектам, которые отсутствуют.
 
Цитата
написал:
А где на листе ТекстБокс и ЛистБокс? Вы же в коде обращаетесь к объектам, которые отсутствуют.
Добрый вечер. не могу понять о чем вы? вроде раньше брал пример подставлял под себя. Работало... Сейчас не хочет

Вроде же я указал лист от куда нужно брать данные.
А вот куда их подставлять в конкретный лист не могу понять как сделать.
------
не как не могу понять как на листе создать TextBox и listbox. понял что в коде ошибка что переменные указаны для не существующий объектов.
Изменено: borisenko2009 - 11.05.2022 21:22:56
 
Добрый вечер! Значит в примере, с которым Вы работали, эти контролы TextBox1 и ListBox1 на листе имелись. А в прикреплённом файле их нет. Попробуйте добавить их на лист.
 
Цитата
написал:
Добрый вечер! Значит в примере, с которым Вы работали, эти контролы TextBox1 и ListBox1 на листе имелись. А в прикреплённом файле их нет. Попробуйте добавить их на лист.
вот эти данные тоже есть на листе
Код
Private Sub TextBox1_change()
    Dim X, i, txt As String, lt, s As String, sn As String, NomStolbDan As Long
    sn = "Данные" ' Имя листа с данными
    If Len(TextBox1.Text) = 0 Or bu Then Exit Sub
    txt = TextBox1.Text
    lt = Len(TextBox1.Text)
    NomStolbDan = ActiveCell.Column
    X = Sheets(sn).Columns(NomStolbDan).SpecialCells(2).Value
    For i = 1 To Sheets(sn).Cells(Rows.Count, NomStolbDan).End(xlUp).Row
        If InStr(1, UCase(Sheets(sn).Cells(i, NomStolbDan)), UCase(TextBox1.Value)) > 0 Then s = s & X(i, 1) & "~" 'формирует по сочетанию букв в любом месте текста
        'If UCase(txt) = UCase(Mid(Sheets("Данные").Cells(i, NomStolbDan), 1, lt)) Then s = s & X(i, 1) & "~" 'формирует по сочетанию букв в начале текста
    Next i
    ListBox1.List = Split(s, "~")
End Sub


Private Sub ListBox1_Click()

    If ListBox1.ListIndex = -1 Then Exit Sub
    bu = True
    ActiveCell.Value = ListBox1.Value
    Me.TextBox1.Visible = False
    Me.ListBox1.Visible = False
    bu = False
End Sub
 
Причем тут данные? И не на листе, а в модуле листа. Это не данные - это тексты макросов. А я говорю Вам про объекты.
 
Форма с поиском по маске. Как найти и получить одно или несколько значений
Код попроще: Форма пользователя. При вставке из формы в ячейку выделяется диапазон нескольких ячеек
Изменено: Jack Famous - 12.05.2022 09:26:43
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
Причем тут данные? И не на листе, а в модуле листа. Это не данные - это тексты макросов. А я говорю Вам про объекты\
Добрый вечер форму TextBox1 и ListBox1. Добавил на лист. Понял в чем проблема. Но дальше опять ошибки... Начинаю вводить данные а имена не те выходят, а иногда выпадает ошибка.
Подскажите пожалуйста куда смотреть еще?
Изменено: borisenko2009 - 15.05.2022 22:37:42
 
Уважаемые форумчане! Очень вас прошу помочь в моем вопросе. Прошу более опытных пользователей дать вектор движения по которому двигаться. Очень надеюсь на Вас. Заранее большое спасибо Вам.
Изменено: borisenko2009 - 19.05.2022 22:14:39
 
Код
     X = Sheets("Для работы").Columns(NomStolbDan).SpecialCells(2).Value
    For i = 1 To UBound(X)
        If InStr(1, UCase(X(i, 1)), UCase(TextBox1.Value)) > 0 Then
измени предел цикла
Изменено: Александр Моторин - 19.05.2022 23:22:57
 
Цитата
написал:
  X = Sheets("Для работы").Columns(NomStolbDan).SpecialCells(2).Value    For i = 1 To UBound(X)        If InStr(1, UCase(X(i, 1)), UCase(TextBox1.Value)) > 0 Then
Добрый вечер.
В таком виде работает.
Спасибо.

Изменено: borisenko2009 - 24.05.2022 19:17:17
 
Возник вопрос, а можно ли сделать так , что если данных которые вносятся в эту форму нет в источнике, что бы они автоматом добавлялись в источник?
Заранее спасибо за ответ.
 
Посмотрите в "Приемах" статью про выпадающий список с добавлением. Там же есть список и с удалением использованных , а также с поиском.
 
Добрый день уважаемые форумчане.

На днях создавал прйс-лист с использованием выпадающего списка (далее - ВС)
ВС необходим с автопоиском в ячейке.

Задача такая: При наборе текста (или любых знаков которые имеются в выпадающем списке) в ячейке с заранее настроенным ВС , Excel сам разворачивает список и показывает только те позиции в списке которые содержат искомый символ (или сочетание символов) . По мере набора текста список сокращается до тех пор пока не достигнет уникальности (т.е. пока не останется единственная позиция соответствующая запросу)

И да, конечно, такая задача не один раз описывалась на форуме и на данном ресурсе. И решений есть куча
Но тупик ситуации в том, что данная задача была реализована и успешно работала! При чём реализована была самый простым способом т.е. через "Данные - проверка Данный - Список" без использование каких-либо макросов, формул, танцев, с бубном и т.д.
И успешно работало с базой данный на более чем 2000 позиций.

Работал я на только купленном, "свежем" ПК с установленным "Office 365 Business"
Но в один момент автопоиск работать перестал после того, как тот же файл был открыт через облако и пере сохранён на другом, личном,  ПК.
Версия "Офис" на всех ПК стоит "Office 365 Business"
После пере-сохранения ни на одном ПК автопоиск работать перестал .... фантастика.

И я бы не против заморозиться и применить один из методов описанных на данном ресурсе, но зачем, если оно и так работало прекрасно ...
Т.е повторюсь,"Офис" уже был с допиленными возможностями автопоиска ВС. И что случилось - хз то ли  обновился офис как-то криво, толи настройка какая-то слетела.

Если кому-то покажется историей выдуманной  или шуткой - прошу воздержаться от комментариев.
Прошу помочь советом : кто сталкивался с подобной ситуацией и как вернуть всё обратно.
Спасибо заранее.

Пример во вложении.  
Страницы: Пред. 1 2 3
Читают тему (гостей: 1)
Наверх