Всем привет. Передо мной встала следующая задача: требуется, чтобы в выпадающем списке можно было ввести вариации значений по определенной маске. Допустим, имеется куча работников с именем Анна и разными фамилиями. Требуется, чтобы выпадающий список проверял слово "Анна", а потом допускал, чтобы через пробел была введена любая фамилия (любое слово). Все это в ОДНОЙ ячейке. Маска типа ("Анна ";"##########"). Если ошибся в имени "Анна" и пробеле после него - чтобы выдавал ошибку, если все правильно - чтобы дальше молчал. У меня сделан список с мультивыбором как здесь http://planetaexcel.ru/techniques/1/181/, вариант 3.
В идеале хочется иметь значения и обычные и с маской, то есть чтобы диапазон для списка выглядел вот так (условно):
Михаил Николай;##### Алексей Петр Павел Дмитрий;##### Анна;#####
А, соответственно, заполненная по мультивыбору ячейка так (условно): Михаил, Николай Стасюк, Николай Манойлов, Алексей, Петр, Павел, Дмитрий Нагорный, Дмитрий Подгорный... etc
Всё равно не понимаю: как Excel должен понять, что в одном случае только имя можно, а в другом - имя и фамилию? Потом: если у Вас 2000 сотрудников (клиентов) то зачем прокручивать их всех? Можно выводить (в ListBox, например) список только тех, кто соответствует трём-четырем первым введённым символам. Подобные решения на форуме были.
jenlenin написал: можно ли дать Excel понять, когда можно, а когда нет
Во всём ведь ведь должна быть какая-то логика, алгоритм - иначе не поймёт )) А почему ЛистБокс неудобен? Начали набирать текст, а он по мере ввода символов заполняется ПОДХОДЯЩИМИ значениями. Вам останется только выбрать нужное. В "Копилке" есть тема "Альтернатива выпадающему списку". Посмотрите - может чего почерпнёте оттуда...списку"
Надо пояснить, наверное. Пример с именами-фамилиями я взял с потолка конечно, чисто для примера. Файл не могу скинуть, простите, по моральным соображениям. В реальности имеется строка ячеек, в которую поочередно вносятся номер, ФИО, а в последнем столбце что клиент купил, через запятую (реализовано по статье мною упомянутой ранее). Далее, то что внесено в ячейки переносится функцией ВПР на новый лист в импровизированную "форму" и печатается. Печать конкретного клиента настраивается набором буквы "п" в первом столбце напротив нужного человека. ВПР ищет у кого есть "п" и переносит его ячейки в поля "формы". С листбоксом ВПР вряд ли сработает. И клиентов 8000, и на каждого листбокс? Так вот, я про тот последний столбец, где "что купил". У некоторых наименований есть размеры (пишем в скобочках). Размеры ооочень разные, и в выпадающий список их все вносить тупо, кроме того размеры есть не у всех товаров. Вот и встал вопрос, как при проверке эксель-списком вносить некоторым товарам размеры в скобочках, чтобы без экселевского мата.
jenlenin написал: И клиентов 8000, и на каждого листбокс?
Подозреваю, что Вы не знаете, что такое ЛистБокс, если задаёте такой вопрос ) Удивляет другое: выпадающий список на 8000 позиций Вы готовы терпеть, а ЛистБокс, где будет, например, всего 10-20 подходящих строк, - нет. Но, это Ваше право - я только предложил один из вариантов )
Листбокс, если не ошибаюсь, это элемент не то Форм, не то ActiveX, и это крутая штука, не спорю. По поводу 8000 строк. Это строки клиентов, а не строки для выпадающего списка. В конце каждой из 8000 строк клиентов (в последнем то бишь столбце) есть выпадающий список товаров (он не из 8000 клиентов сделан, а совсем из другого отдельного динамического диапазона!). Так вот, чтобы он не растянулся на 2000 значений, с перебором всех комбинаций размеров, хочется заставить Эксель разбираться где можно, а где нельзя ставить размеры.
два листбокса сделать - не вариант? в одном - список наименований. в другом - список размеров для выбранного наименования. там. где размеров нет - второй список пустой или даже вообще недоступный.
Вы не обижайтесь - но с масками Вы какую-то ерунду задумали.
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Связанные списки - предлагал, думал. Все гундят, что два поля сложно, проще просто печатать не думая в одном. И при этом данные проверять нужно, чтобы без очепяток. И что делать, если два, три, четыре наименования с размерами. Сделать 5 полей уж сразу?)) Думал еще функцию СЦЕПИТЬ засунуть вот в таком виде СЦЕПИТЬ("рейка сосновая (";*тут вот как раз каким-то макаром заставить Эксель брать значения размеров из диапазона*;" м)") в диапазон списка.
Сейчас попробую файл-аналог создать, действительно, что тут голословить
Т.е. Вам лень поработать над файлом, но не жаль времени помогающих, которые будут в нем ковыряться? Легче послать по ссылке, чем поработать самому? Когда же такие, как Вы, поймут, что от этого зависит качество и скорость помощи Вам же?
Как видите не лень. И так как мне не лень, помогающие будут ковыряться в максимально упрощенном и при этом максимально приближенном к боевым условиям файле.
З.Ы. Но я таки снес все попирающие мораль данные, так что мораль стойкая.)
З.З.Ы. Ну что ж, в лом так в лом, спать так спать. Всем спасибо, кто принял участие в обсуждении.
jenlenin написал: Как видите не лень. И так как мне не лень, помогающие будут ковыряться в максимально упрощенном и при этом максимально приближенном к боевым условиям файле.
помогающие помогают по конкретному вопросу, а не ковыряются во всех ваших боевых условиях - они и к бою то не особо стремятся... мы люди мирные ... см вариант 12 (ввод по маске) - правда базу надо иметь... запросами sql можно подтянуть и нужные размеры, и даже склеить можно пробовать, наверно, Field1 + Field2 - для отображения в одной ячейке... (если изначально потратить время на создание нормальной базы)... (альтернатива: ВПР и Сцепить - как вы справедливо заметили - таблицу соответствий можно засунуть в скрытый лист - для использования этой альтернативы)... а по хорошему - если ковыряться, то в раздел Работа... P.S. если не лень, можете ещё посмотреть вариант выпадающего пост27 (файл оттуда прикладываю со вставленной кнопкой для запуска UserForm - чтобы избежать лишних вопросов ) P.P.S т.к. ваш алгоритм решения вашей проблемы очень аморфный - то и помощь лишь на то, чтобы вы сами задумались... успехов
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)