Страницы: 1
RSS
Применить фильтр по условию одновременно для всех листов книги кроме одного
 
Добрый вечер, уважаемые форумчане!  У меня есть один вопрос касательно применения фильтра. Как можно применить фильтр по условию (условие одно из многочисленных предприятий) с тем чтобы во всех листах кроме 1 отображались данные по выбранному предприятию?
 
eska, Я позволю себе немного вашу задачу скорректировать, возможно это будет удобее для работы.
А именно:
  • фильр применять при переходе на лист (1,2,3) а не при изменении значения,
  • а возможно фильтр на последнем активном листе 1,2,3 переносить на тот, который стал активным.
Как я понимаю это все для удобства, а не для полной защиты вспоминая предудущую тему.
Изменено: БМВ - 09.03.2018 18:39:31
По вопросам из тем форума, личку не читаю.
 
Вечер добрый.
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Index < 3 Then Exit Sub
With Sh
r = .Cells(Rows.Count, 2).End(xlUp).Row
  With .Range(.Cells(8, 2), .Cells(r, 2))
  .ColumnDifferences(.Find(Sheets(1).[b2])).EntireRow.Hidden = True
  End With
End With
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Index < 2 Then Exit Sub
Sh.Rows.EntireRow.Hidden = False
End Sub
 
Код
Private Sub WorkSheet_Change(ByVal Target As Range)
If Target.Address <> "$B$2" Then Exit Sub
Dim aa As Object, a&, dt$
dt = Target.Value
Application.ScreenUpdating = False
For Each aa In ThisWorkbook.Sheets
  If aa.Name <> Me.Name Then
    If Not aa.AutoFilterMode Then aa.Rows(7).AutoFilter
    a = aa.Cells(Rows.Count, 1).End(xlUp).Row
    aa.Range("A7:AU" & a).AutoFilter Field:=2, Criteria1:=dt
  End If
Next
Application.ScreenUpdating = True
End Sub
 
k61, Супер!! Работает! Спасибо большое!! Только не могли бы Вы сказать, как сделать так, чтобы была также опция отображать все предприятия?
 
Добавьте повеление убрать фильтр при щелчке по шапке:
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Index < 2 Then Exit Sub
If Target.Row <> 7 Then Exit Sub
Sh.Rows.EntireRow.Hidden = False
End Sub
 
k61, Извините, я не понял по какой шапке?
 
Anchoret, Поздно заметил Ваш вариант. Огромное Вам спасибо!!
 
По шапке таблиц на листах кроме 1-го и 2-го.
 
Anchoret, Добрый вечер! Я очень извиняюсь, не стал создавать отдельную тему, а как в Вашем коде, исправить, чтобы фильтр брался до 200 строки?
Код
a = aa.Cells(Rows.Count, 1).End(xlUp).Row
 
Цитата
eska написал:
чтобы фильтр брался до 200 строки
а смысл если у вас таблица до 100 например?
по сути а=.... уберите и
Код
aa.Range("A7:AU200").AutoFilter Field:=2, Criteria1:=dt
 
V, Спасибо! Вот так тоже вроде работает
Код
a = aa.Range("B8:B200").Row
 
упс. невнимателен.
a=200 тогда достаточно если нужна эта строчка. :)
Изменено: V - 12.03.2018 18:19:34
Страницы: 1
Наверх