Помогите пожалуйста, мне это целый тренажер для мозга.
Под ексель.
Нужно, чтобы в форме было всего 2 ComboBox: в первом выбираем название поля (по сути выбираем колонку= первую ее ячейку), а во втором формируется автофильтр именно по этой колонке. Выбрав значение из второго ComboBox - получаем все строки с этим значением, чтобы поместить в новосозданную книгу...
Зы: количество колонок - часто очень разное
Да не пошлите Вы меня подальше. Решил задачку усложнить...
1. В вашем примере, если я выбрал значение из первого комбобокса, потом второго, а потом передумал, и в первом поменял значение - во втором остается та же самая колонка, что была при первом выборе, т.е второй комбобокс не обновляется.
2. поискав по "автофильтр в ComboBox" ответов толком не нашел, но зато понял, что тут фильтр "двойной" нужен. - для самого комбобокса (чтобы в нем выводились только уникальные записи, как в автофильтре, вставленном в лист), и автофильтр, чтобы по выбранному критерию в комбобоксе - выбрать из таблицы все строки в которых этот критерий встречается...
Зы: фильтр, который выводит только уникальные значения из колонки в комбобокс меня интересовал давно (часто в формах использовать приходится), но решения так и не нашел.
Уважаемый quest, примерно понятно, чего Вы хотите добиться, но все же не до конца все ясно. Можете показать пример таблицы для фильтрации, скажем выложить на файлообменник или на e-mail (указан в моем профиле)? Я так понял, вы хотите в первом комбобоксе получить список названий колонок, во втором в случае выбора - перечень уникальных значений по колонке в пределах таблицы. Далее в случае выбора значения из второго комбобокса что вы хотите делать? Фильтровать строки таблицы штатным автофильтром Excel или выбрать строки таблицы и перенести в новую Книгу Excel? Нужно ли сделать вывод в комбо по аналогии с штатным автофильтром Excel "все)", "первые 10...)", "условие...)", "пустые)", "непустые)"? Сделать это в принципе можно, надо просто до конца уточнить как именно сделать, ведь можно по-разному.
В вашем примере, если я выбрал значение из первого комбобокса, потом второго, а потом передумал, и в первом поменял значение - во втором остается та же самая колонка, что была при первом выборе, т.е второй комбобокс не обновляется.
Обнвляется, но не удаляются предыдущие значения. Чтобы удалялись предыдущие значения нужно чуть-чуть переделать код
Спасибо. Пример таблицы для фильтрации, отправлю на e-mail, редактирую ваше же понимание вопроса:
mc-black пишет:
В первом комбобоксе получить список названий колонок, во втором в случае выбора - перечень уникальных значений по колонке в пределах таблицы. Далее в случае выбора значения из второго комбобокса выбрать строки таблицы и перенести в новую Книгу Excel. Нужно вывод в комбо только уникальных значений в пределах выбраной колонки.
Не могу чет на электронку, вот выложил пример таблицы: zapovednyk.ru/failo/PrimerTab.rar
Это все только маленькая запчасть своеобразной мини СУБД где в качестве БД любая простая екселевская таблица (ибо так удобно нашему планктону). Уже почти все готово, работает, но удобства не хватает...
Спасибо всем. Все супер. Работает!!! Осталось причесать и в надстройку вставить. Дайте ваши кошельки, у меня несколько wmz завалялось, хоть символически отблагодарю. А мысли хорошие изложили, и поиском подобного я не находил... может еще какому дилетанту пригодится
Но не смог разобраться, как сделать, чтобы при отсутствии выбора условия в ComboBox2 здесь выводился альтернативный текст.
При отсутствии выбора можно обработать ComboBox2.ListIndex (при отсутствии выбора равен -1, выбранные значения начинаются с нуля) или как у тебя (и у mc-black'a) - ComboBox2.Value проверять. Только это не будет работать в событии ComboBox2_Change(), т.к. событие происходит ТОЛЬКО при выборе какого-либо значения. А если пользователь просмотрел все значения и ничего не выбрал, то событие ComboBox2_Change() не будет вызвано. Лучше поставить проверку значения на кнопку, которую предлагаешь пользоваиелю нажать - как самый надежный и правильный вариант...