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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2013, 10:15   #1
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию Продвинутый фильтр с автопростановкой на VBA

Здравствуйте, уважаемые форумчане!
Есть прайс-листы, которые нужно прописывать марку, наименование, изготовителя, размеры, цены и другие характеристики. То есть всего из перечисленного выделен отдельный столбец.
Допустим, я привел таблицу в порядок и нужно проставить только цены.
Хочу реализовать на VBA следующий механизм:
Выставляю ячейку напротив одного из множества повторяющихся наименований. Определяю текущий адрес ячейки через ActiveCell.Address.
Эта часть кода работает.
1. Затем необходимо вычленить номер строки (как?), 2. и если выставлен чекбокс, который соответствует одному из столбцов характеристик прайс-листа, произвести поиск по значению ячейки на пересечении активной ячейки с выбранными столбцами и автоматическую простановку ячеек.
Привожу юзерформу для наглядности:
http://hostingkartinok.com/show-imag...58b781e702ce39
3. Если Столбец активной ячейки соответствует одному из столбцов выставляемых характеристик, чекбокс этого столбца должен быть неактивным.
То есть хочу создать продвинутый аналог фильтра MS Office, заточенный именно под мою форму. Во всяком случае, мне кажется, что он будет более продвинутым)).
Надеюсь, на Вашу помощь.

Последний раз редактировалось Lamo; 25.07.2013 в 10:55. Причина: Доработка идеи
Lamo вне форума Ответить с цитированием
Старый 25.07.2013, 10:43   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Т.е., как я понял, вы хотите сделать так:
- вызывается форма и выбираются столбцы по которым будет производиться фильтрация
- выделяется ячейка прайс-листа и, если столбец используется для фильтрации, то производится фильтрация, по данному значению

и сразу возникает два вопроса:
- по какому условию должен сниматься фильтр?
- как быть, если выделена не одна ячейка, а область?

з.ы. зачем использовать форму, если можно прямо в заголовке выделить ячейку указывающую на использование в фильтрации? и пользователям будет заметно удобнее, чем запоминать сочетания клавиш...
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 25.07.2013 в 10:46.
DiemonStar вне форума Ответить с цитированием
Старый 25.07.2013, 10:53   #3
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
Т.е., как я понял, вы хотите сделать так:
- вызывается форма и выбираются столбцы по которым будет производиться фильтрация
- выделяется ячейка прайс-листа и, если столбец используется для фильтрации, то производится фильтрация, по данному значению

и сразу возникает два вопроса:
- по какому условию должен сниматься фильтр?
- как быть, если выделена не одна ячейка, а область?

- выделяется ячейка прайс-листа и, если столбец используется в чекбоксе, то производится поиск по значению ячейки на пересечении активной ячейки с выбранными столбцами и автоматическую простановку ячеек, по данному значению - Да, по значению ячейки на пересечении активной ячейки с выбранными столбцами.

и сразу возникает два вопроса:
- по какому условию должен сниматься фильтр? - Блин, вот тут я уже соврал. Фильтр в принципе получается не нужен, чтобы его каждый раз не сбрасывать и экономить время. Тогда придется реализовать поиск по значению ячейки на пересечении активной ячейки с выбранными столбцами и автоматическую простановку ячеек.
- как быть, если выделена не одна ячейка, а область? - Не предусмотрено, только по значению одной ячейки. Кстати, спасибо, надо будет сделать выскакивающее окошко "Выдели ячейку, а не область) если выделена область и возможность настройки этого окошка в юзерформе: (Включить/Выключить - Горячие клавиши).
Lamo вне форума Ответить с цитированием
Старый 25.07.2013, 11:01   #4
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

Друзья, помогите кто чем может, кто одним пунктом, допустим 1. Затем необходимо вычленить номер строки (как?), кто общим представлением о задаче.
Lamo вне форума Ответить с цитированием
Старый 25.07.2013, 12:18   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

что-то такое требуется?
Вложения
Тип файла: zip Книга1.zip (14.4 Кб, 29 просмотров)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.07.2013, 12:37   #6
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

DiemonStar, Если честно, только вчера написал свой первый месседжбокс и, в силу своей неопытности не совсем понял как это работает.
Как запустить или проверить работу вашего скрипта? У меня 2010 офис.
Готов даже сделать небольшую материальную помощь за поддержку в разработке скрипта.
Lamo вне форума Ответить с цитированием
Старый 25.07.2013, 12:44   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Вы выделяете ячейку таблицы, например, Товар 1 и во всех остальных строках, где содержится Товар1, заполнятся единицы измерения из строки с выделенной ячейкой. Если измените значение над заголовком "количество" на ИСТИНА, то помимо единиц измерения будет копироваться и количество из выделенной строки.

Если это не то, что вы хотели, то попробуйте описать что у вас есть, чем это не устраивает и что вы хотите получить в итоге. Если честно, мне до сих пор непонятно, чего вы хотите добиться.
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 25.07.2013 в 12:46.
DiemonStar вне форума Ответить с цитированием
Старый 25.07.2013, 13:20   #8
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

Смотрите, есть таблицы, которые могут иметь несколько тысяч строк:
Пример:



Расставлять цены вручную долго и муторно.
Для этого используем фильтры.
Пример фильтрованного куска таблицы:



Я же хочу реализовать это в виде макроса.



Выставляем в чекбоксах нужные галочки. Каждый чекбокс отвечает за поиск в своем столбце. Выставили галочки жмем Ок. Выходим.
Далее идем в форму прайс-листа, ставим цену, допустим в рублях, макрос ищет повторы в столбцах с выставленными в юзерформе чекбоксами, если находит повторы (как на втором скриншоте), то автоматом, без фильтрации, проставляет цены на эти повторы. Если повторов нет, то и вбивания цены нет. То есть достигается экономия времени.
В процессе подготовки формы макрос тоже можно использовать для заполнения повторяющихся строк.
Вроде понятно расписал.
Lamo вне форума Ответить с цитированием
Старый 25.07.2013, 13:32   #9
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

у вас есть пример отбора по "ручной балансировочный клапан". Цены во всех позициях различные. Вопрос: как макрос сможет определить, какую цену вбивать?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.07.2013, 14:02   #10
Lamo
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
у вас есть пример отбора по "ручной балансировочный клапан". Цены во всех позициях различные. Вопрос: как макрос сможет определить, какую цену вбивать?
Цены разные потому, что диаметры разные. Там столбец "Размеры/Диаметры"(не подписан), на него фильтр не выставлен, если бы выставили и этот фильтр, допустим, по 25-му диаметру, то остались бы последние три позиции. Суть работы макроса, указать активную ячейку, чекбоксы с выставленными галочками служат параметрами поиска. То есть если значения поисковых столбцов в активной строке повторяются ниже или выше, то на них автоматически проставляются цены.
Lamo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать, чтобы если открываешь один файл, то автоматически открывался другой? Artem_85 Microsoft Office Excel 10 22.02.2012 14:02
Как программно включить чекбокс??? xpams HTML и CSS 2 08.01.2012 19:18
Если, то +1. Как сделать? Ok-Alex Microsoft Office Excel 3 01.08.2011 19:09
Как привязать чекбокс к ячейке? Bezdar Microsoft Office Excel 1 24.12.2010 13:59
Возможно ли такое...если да то как это сделать?! prizrak1390 Общие вопросы Delphi 9 03.01.2008 10:14