Уважаемые форумчане, я всё по тому же сообщению #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, чтобы поиск производить с таблицы, где результатами являются значения формул?
Здравствуйте! Подскажите пожалуйста как связать между собой боксы, либо альтернативное решение, задача: есть список категорий и к каждому списку категорий есть свой список (к примеру категория Томат и список сортов к нему. по итогу в таблице ввода нужно чтобы можно было вводить категории из всех имеющихся с возможностью поиска по части слова. В соседнем столбце Сорт при вводе из списка значений с возможностью поиска выводился и использовался только список соответствующий указанной Категории. пример: в столбце таблицы Категория указал Томат, в соседнем столбце использовался список Сортов только Томата.
Добрый день. помогите пожалуйста не работает... сам макрос пытался вставить в лист ЦППН в РМЦ, но постоянно ошибка. с чем связано не пойму. Нужно что бы список выпадающий появлялся в ячейках "Ответственный за подготовку" и "Ответственный за проведение" данные для списка на листе "Для работы"
написал: А где на листе ТекстБокс и ЛистБокс? Вы же в коде обращаетесь к объектам, которые отсутствуют.
Добрый вечер. не могу понять о чем вы? вроде раньше брал пример подставлял под себя. Работало... Сейчас не хочет
Вроде же я указал лист от куда нужно брать данные. А вот куда их подставлять в конкретный лист не могу понять как сделать. ------ не как не могу понять как на листе создать TextBox и listbox. понял что в коде ошибка что переменные указаны для не существующий объектов.
Добрый вечер! Значит в примере, с которым Вы работали, эти контролы 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
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
написал: Причем тут данные? И не на листе, а в модуле листа. Это не данные - это тексты макросов. А я говорю Вам про объекты\
Добрый вечер форму TextBox1 и ListBox1. Добавил на лист. Понял в чем проблема. Но дальше опять ошибки... Начинаю вводить данные а имена не те выходят, а иногда выпадает ошибка. Подскажите пожалуйста куда смотреть еще?
Уважаемые форумчане! Очень вас прошу помочь в моем вопросе. Прошу более опытных пользователей дать вектор движения по которому двигаться. Очень надеюсь на Вас. Заранее большое спасибо Вам.
написал: 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
Возник вопрос, а можно ли сделать так , что если данных которые вносятся в эту форму нет в источнике, что бы они автоматом добавлялись в источник? Заранее спасибо за ответ.
На днях создавал прйс-лист с использованием выпадающего списка (далее - ВС) ВС необходим с автопоиском в ячейке.
Задача такая: При наборе текста (или любых знаков которые имеются в выпадающем списке) в ячейке с заранее настроенным ВС , Excel сам разворачивает список и показывает только те позиции в списке которые содержат искомый символ (или сочетание символов) . По мере набора текста список сокращается до тех пор пока не достигнет уникальности (т.е. пока не останется единственная позиция соответствующая запросу)
И да, конечно, такая задача не один раз описывалась на форуме и на данном ресурсе. И решений есть куча Но тупик ситуации в том, что данная задача была реализована и успешно работала! При чём реализована была самый простым способом т.е. через "Данные - проверка Данный - Список" без использование каких-либо макросов, формул, танцев, с бубном и т.д. И успешно работало с базой данный на более чем 2000 позиций.
Работал я на только купленном, "свежем" ПК с установленным "Office 365 Business" Но в один момент автопоиск работать перестал после того, как тот же файл был открыт через облако и пере сохранён на другом, личном, ПК. Версия "Офис" на всех ПК стоит "Office 365 Business" После пере-сохранения ни на одном ПК автопоиск работать перестал .... фантастика.
И я бы не против заморозиться и применить один из методов описанных на данном ресурсе, но зачем, если оно и так работало прекрасно ... Т.е повторюсь,"Офис" уже был с допиленными возможностями автопоиска ВС. И что случилось - хз то ли обновился офис как-то криво, толи настройка какая-то слетела.
Если кому-то покажется историей выдуманной или шуткой - прошу воздержаться от комментариев. Прошу помочь советом : кто сталкивался с подобной ситуацией и как вернуть всё обратно. Спасибо заранее.
Не уверен, что еще актуально конкретно для вас, но тем не менее делюсь с вами и потомками своим решением.
Реализованы связанные выпадающие списки с сортировкой по алфавиту и выводом уникальных значений, я под себя кастомил еще больше его, это базовая версия на основе вашего примера
Не могу никак дойти до того, чтобы обращаться к умной таблице, а не к определённым столбцам.
Или же если нельзя обращаться к УТ для внесения данных из другого листа, то хотя бы к разным столбцам.
К примеру если мне необходимо заполнить ячейку (или диапазон J2:J500), то мне всё равно необходимо брать данные из таблицы A? Это переменная NomStolbDan = ActiveCells.Column мне не очень понятна.
Диапазон для выпадающего списка определен ренжом:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("E2:E500, K2:P500")) Is Nothing Then
If Target.Value <> "" Then: Me.TextBox1.Visible = False: Me.ListBox1.Visible = False: Exit Sub
Переменные объявлены как и в примере следующие:
Код
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, "~")
Внимание вопрос! 1. Как необходимо отредактировать код, чтобы для диапазона выпадающего списка столбца "L2:L500" в листе "Основной лист" отображались данные с листа "Данные" со столбца умной таблицы (либо же с конкретного столбца "M"? 2. Как необходимо отредактировать код, чтобы для диапазона выпадающего списка столбца "M , P" (столбцы не рядом друг с другом) в листе "Основной лист" отображались данные с листа "Данные" со столбца умной таблицы (либо же с конкретного столбца "N"?)
Если необходима дополнительная информация пример во вложении (выпадающий список помечен жёлтым), ну и я тут
Вы выбрали конечно очень мудренный вариант, потому так все сложно кажется, по макросу видно что выпадающий список формируется для 12 столбца из 12 столбца данные и никак иначе. Вам же нужно по другому, значит в логике нужно заложить соотношение столбцов.
написал: Вы выбрали конечно очень мудренный вариант, потому так все сложно кажется, по макросу видно что выпадающий список формируется для 12 столбца из 12 столбца данные и никак иначе. Вам же нужно по другому, значит в логике нужно заложить соотношение столбцов
Заложить их для переменной X? То есть в X написать Лист.НаименованиеУт.Ренж? Плохо понимаю что вы имеете в виду, говоря общими фразами
Вот только до конца не доходит, как отредактировать код для нескольких ренжей? E2:E500 "Основной лист" -> NomStolbdan = 13, F2:F500 "Основной лист -> NomStolbdan = 14, G2:G500 "Основой лист" -> NomStolbdan = снова 13)
написал: Не уверен, что еще актуально конкретно для вас, но тем не менее делюсь с вами и потомками своим решением.Реализованы связанные выпадающие списки с сортировкой по алфавиту и выводом уникальных значений, я под себя кастомил еще больше его, это базовая версия на основе вашего примера
Сможете помочь с комбобоксом? Я в макросах "чайник") Не могу никак разобраться.
Прикрепила файл. В листе под названием "Лист 2" ячейка отмечена желтым. Можно ли сделать выпадающий список (начинаем вводить, а нам уже предлагаются варианты), который будет транслирован из "Лист 1" диапазона столбца С?
Добрый день, уважаемые форумчане. Макросами раньше не пользовался. Вставил код в свой файл, возникает ошибка на отсутствие TextBox1. Очень вас прошу помочь в моем вопросе.