Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Автофильтр по названию из предыдущего листа
 
Добрый день! Подскажите, у меня разбивка по регионам, в каждом регионе по 4 группы различной информации.
Каждый регион в итоге обращается к одному листу, допустим "Аутсорс".
В данный момент прописываю автофильтр по критериям (равно) Пример:
Скрытый текст

Так как регионов множество приходится прописывать макрос для каждой группы информации * на кол-во регионов.

Как можно в строке "Criterial1:=" автоматически подтягивать имя листа с которого был сделан переход?

Если получится я так понимаю это превратиться в один макрос для всех переходов. (Надеюсь).

Изменено: Jagig - 16 Окт 2019 10:52:12
Новичок в VBA
 
Код
Private Sub Worksheet_Activate()
    If preSheetName <> "" Then
        ActiveSheet.Range("B:B").AutoFilter Field:=2, Criteria1:=preSheetName
    End If
    preSheetName = ActiveSheet.Name
End Sub
В модуль каждого листа.
Изменено: МатросНаЗебре - 16 Окт 2019 12:15:37
 
МатросНаЗебре, Не понял куда копировать этот код :(
Новичок в VBA
 
Правой кнопкой на ярлычке листа - Исходный текст.
Изменено: МатросНаЗебре - 16 Окт 2019 12:13:20
 
МатросНаЗебре,  :D Это я понял но в какую часть кода?

Скрытый текст

У меня всего 3 модуля. А листов больше 20-ти

Нужно сюда в Критерий как то ваш код вписать. (Не врублюсь как).
Изменено: Jagig - 16 Окт 2019 12:23:21
Новичок в VBA
 
Просто вставьте в модули. Например, в конец модуля.
 
МатросНаЗебре, Синтаксическая ошибка
Новичок в VBA
 
МатросНаЗебре, Может я не так выразился.
Вот Главный лист,  с него я перехожу на лист региона, там 4 кнопки которые ведут в 4 листа (все 20 или сколько там регионов ведут в одни и те же листы (Монтаж" и прочие)
Мне нужно чтобы когда я попал на лист региона, имя листа региона запомнилось и при нажатии на кнопку "Монтаж" в Критерии автофильтра была ссылка на название Листа с которого был сделан переход. В данный момент автофильтр происход по заданному мню параметру(в примере актюбинский). В итоге мне надо прописать и привязать около 80 макросов автофильтра.
Никак не могу найти как в критерии автофильтра прописать имя предыдущего активного Листа чтобы на все 20 региона использовались только 4 макроса.
Новичок в VBA
 
Проверьте, нет ли кавычек в строке
Код
Criteria1:=preSheetName
 
Тогда так. В модули листов регионов вставить код:
Код
Private Sub Worksheet_Activate()
    preSheetName = ActiveSheet.Name
End Sub
В макрос, устанавливающий фильтр:
Код
...Criteria1:=preSheetName
 
МатросНаЗебре,
Вот у меня три модуля:
Скрытый текст


Отфильтровалось но неизвестно что, осталась только пустота...
Изменено: Jagig - 16 Окт 2019 13:49:59
Новичок в VBA
 
В " 20 или сколько там " модулей листов регионов нужно вставить текст:
Код
Private Sub Worksheet_Activate()
    preSheetName = ActiveSheet.Name
End Sub
 
Не понимаю. Все равно фильтрует неизвестное значениеМатросНаЗебре,
Новичок в VBA
 
мне кажется что в результате ничего плохого не будет если
Код
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Worksheets(<имя листа с данными и фильтром>).Range("B:B").AutoFilter Field:=2, Criteria1:=Sh.Name
End Sub
Изменено: БМВ - 16 Окт 2019 14:21:17
 
Давайте сделаем для одного региона. Далее будет понятно.
В модуль листа "Актюбинский" вставьте код:
Код
Private Sub Worksheet_Activate()
    preSheetName = ActiveSheet.Name
End Sub
Для того, чтоб это сделать, нужно: правый клик на ярлычке листа "Актюбинский" - Исходный текст. В появившемся окне вставляем этот текст.
Возвращаемся в Excel. Кликаем любой лист, кроме "Актюбинский". Возвращаемся на "Актюбинский". Идём на лист, на котором нужно поставить фильтр. Видимо, "Монтаж". Запускаем макрос, устанавливающий фильтр.
 
МатросНаЗебре, Делаю все как вы говорите. Вот скрины.(ЧЯДНТ?)

Картинки удалены - превышение допустимого размера вложания [МОДЕРАТОР]
Изменено: Jagig - 17 Окт 2019 10:25:42
Новичок в VBA
 
Цитата
Jagig написал:
Делаю все как вы говорите.
а не пробовали так, как я писал?
 
Надо выбрать лист "Актюбинский", потом выбрать любой другой лист, потом опять "Актюбинский". Потом лист "Монтаж". Это надо сделать один раз после открытия книги. Или сделать, как БМВ написал.
 
Спасибочки за ответы!Нашла решение проблемы!
 
БМВ,как применить данный макрос к нескольким листам? На первый у меня получилось.
Скрытый текст

На листы кроме "1" фильтр не включается.

Изм.
Нашел:
Скрытый текст
Изменено: Jagig - 21 Окт 2019 06:42:31
Новичок в VBA
 
Ну разве что записать можно чуть короче
Код
Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    For each WSName in Array("1","2","3","4")
        Worksheets(WSName).Range("B:B").AutoFilter Field:=2, Criteria1:=Sh.Name
    next    
End Sub
 
БМВ, Супер, да так даже короче.

Другой вопрос.
Как можно переименовать лист по значению ячейки в первом листе?
Идея такая все эти 20 регионов уместить в 1 лист, его только переименовывать автоматически и далее как вы уже мне помогли (фильтрует данные по названию листа).
Скрытый текст

Возможно это к замкнутому кругу приведет пока не нашел подходящего ответа.
Новичок в VBA
 
Jagig,  Как Вы наверно и сами понимаете, это вопрос не этой темы.
Страницы: 1
Читают тему (гостей: 1)
Наверх