Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2013, 01:31   #1
konstantin1990
Пользователь
 
Регистрация: 20.07.2013
Сообщений: 63
По умолчанию Не работает афтофильтр

Здравствуйте! Есть форма на которой содержится combobox с определенными значениями, и есть база данных на листе1 ( которая будет пополнятся и изменятся время от времени) при выборе значений из combobox должна фильтроватся база данных с помощью автофильтра. Но дело в том, что мой код не работает. А автофильтр должен работать именно из под созданной формы, так как потом сами листы эксель я буду скрывать от посторонних глаз и будет видна только форма. Лист будет видеть только тот кто будет редактировать базу данных. Но на данный момент проблема с автофильтром! Помогите пожалуйста! Как сделать так чтобы он фильтровал значения в диапазоне A2:J300 по первому столбцу?
Я, кстати, нашел в нэте пример, который немного похож на мою ситуацию, но ничего не смог сделать, ума не хватает переделать для себя.
Вложения
Тип файла: zip my problem.zip (19.7 Кб, 6 просмотров)
Тип файла: zip пример.zip (18.2 Кб, 6 просмотров)

Последний раз редактировалось konstantin1990; 29.08.2013 в 01:35.
konstantin1990 вне форума Ответить с цитированием
Старый 29.08.2013, 05:41   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

После изменения значения в ComboBox и занесения этого значения в ячейку "X2" по событию Worksheet_Change Вы запускаете процедуру, которая применяет автофильтр и тут же его снимает.
Из кода этой процедуры в модуле рабочего листа уберите строку
Код:
.Parent.AutoFilterMode = 0
Но можно все сделать существенно проще (см. пример во вложении).
Вложения
Тип файла: rar Example.rar (15.2 Кб, 11 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 29.08.2013 в 06:02.
SAS888 вне форума Ответить с цитированием
Старый 29.08.2013, 07:13   #3
konstantin1990
Пользователь
 
Регистрация: 20.07.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
После изменения значения в ComboBox и занесения этого значения в ячейку "X2" по событию Worksheet_Change Вы запускаете процедуру, которая применяет автофильтр и тут же его снимает.
Из кода этой процедуры в модуле рабочего листа уберите строку
Код:
.Parent.AutoFilterMode = 0
Но можно все сделать существенно проще (см. пример во вложении).
Спасибо! Действительно так гораздо проще. Вот только как решить проблему с тем, что в Listbox отображаются все значения указанные в диапазоне, а нужно чтобы указывались только отфильтрованные? Т.е например если выбрали UTSS в ListBox Отобразилось только две строки с данными по UTSS?
konstantin1990 вне форума Ответить с цитированием
Старый 29.08.2013, 08:00   #4
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Наполнение листбокса только видимыми строками (должны быть отсортированы по возрастанию) вынести в отдельную процедуру и запускать её после изменения текстбокса.
kalbasiatka вне форума Ответить с цитированием
Старый 29.08.2013, 08:02   #5
konstantin1990
Пользователь
 
Регистрация: 20.07.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от kalbasiatka Посмотреть сообщение
Наполнение листбокса только видимыми строками (должны быть отсортированы по возрастанию) вынести в отдельную процедуру и запускать её после изменения текстбокса.
ммм понятно, а пример можно?
konstantin1990 вне форума Ответить с цитированием
Старый 29.08.2013, 08:42   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Так как не существует способа определить заголовки столбцов в свойстве ColmnnHeads, когда в качестве источника списка применяется массив VBA (что, как я понимаю, автору нужно), предлагаю копировать отфильтрованные строки в свободную часть рабочего листа и
использовать свойство RowSource, указав новый диапазон значений (см. пример во вложении).
Вложения
Тип файла: rar Example_2.rar (20.4 Кб, 9 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 29.08.2013 в 17:56.
SAS888 вне форума Ответить с цитированием
Старый 29.08.2013, 22:06   #7
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Немного переделал. Ширина колонки "Доп.Инф." 1000 - это для какого монитора?
Вложения
Тип файла: rar Example3.rar (19.8 Кб, 8 просмотров)
kalbasiatka вне форума Ответить с цитированием
Старый 30.08.2013, 05:52   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Небольшое замечание к варианту от kalbasiatka:
После дополнения (изменения) данных в исходной таблице, их необходимо обязательно отсортировать по 1-му столбцу, иначе не все требуемые данные будут отображаться в ListBox-е.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 30.08.2013, 07:24   #9
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Небольшое замечание к варианту от kalbasiatka:
После дополнения (изменения) данных в исходной таблице, их необходимо обязательно отсортировать по 1-му столбцу, иначе не все требуемые данные будут отображаться в ListBox-е.
Я об этом уже писал ) пост #4, да и бессмысленно это всё. ТС уже в другой теме задаёт вопросы, видимо нашёл чужие формы и пытается подогнать под себя.

Последний раз редактировалось kalbasiatka; 30.08.2013 в 07:30.
kalbasiatka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает relese версия проги и debug работает тока на моем компе D][mon C# (си шарп) 2 04.05.2012 20:21
Программа работает в WinXP и не работает в Win7 blblbl-org Общие вопросы Delphi 4 23.04.2012 19:50
Программа работает пошагово, но не работает при запуске -Katerina- Microsoft Office Excel 3 12.07.2011 03:40
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04