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

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

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

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

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

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

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

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


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

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

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

Изм.
Нашел:
Скрытый текст
Изменено: Jagig - 21.10.2019 06:42:31
 
Ну разве что записать можно чуть короче
Код
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 лист, его только переименовывать автоматически и далее как вы уже мне помогли (фильтрует данные по названию листа).
Скрытый текст

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