Доброго всем времени суток. Собственно вопрос в названии. Возникла необходимость разом снять фильтр со всех( а их 21 лист) листов книги. Попробовал накропать что то самостоятельно, но не хочет работать по всем листам: только на активном.Вопрос: что не так сделал? [vba]
Код
Sub Макрос1() Dim SO As Long, SO1 As Long, sh As Worksheet SO = Cells(15, Columns.Count).End(xlToLeft).Column SO1 = Cells(Rows.Count, 2).End(xlUp).Row For Each sh In ThisWorkbook.Sheets If sh.Name <> "План" And sh.Name <> "литье" Then
With sh ActiveSheet.Range(Cells(17, 1), Cells(SO1, SO)).AutoFilter Field:=2
End With End If Next sh
End Sub
[/vba]
Доброго всем времени суток. Собственно вопрос в названии. Возникла необходимость разом снять фильтр со всех( а их 21 лист) листов книги. Попробовал накропать что то самостоятельно, но не хочет работать по всем листам: только на активном.Вопрос: что не так сделал? [vba]
Код
Sub Макрос1() Dim SO As Long, SO1 As Long, sh As Worksheet SO = Cells(15, Columns.Count).End(xlToLeft).Column SO1 = Cells(Rows.Count, 2).End(xlUp).Row For Each sh In ThisWorkbook.Sheets If sh.Name <> "План" And sh.Name <> "литье" Then
With sh ActiveSheet.Range(Cells(17, 1), Cells(SO1, SO)).AutoFilter Field:=2
Sub Макрос1() Dim SO As Long, SO1 As Long, sh As Worksheet SO = Cells(15, Columns.Count).End(xlToLeft).Column SO1 = Cells(Rows.Count, 2).End(xlUp).Row For Each sh In ThisWorkbook.Sheets If sh.Name <> "План" And sh.Name <> "литье" Then
With sh sh.Activate ActiveSheet.Range(Cells(17, 1), Cells(SO1, SO)).AutoFilter Field:=2
End With End If Next sh
End Sub
[/vba]
[vba]
Код
'можно так
Sub Макрос1() Dim SO As Long, SO1 As Long, sh As Worksheet SO = Cells(15, Columns.Count).End(xlToLeft).Column SO1 = Cells(Rows.Count, 2).End(xlUp).Row For Each sh In ThisWorkbook.Sheets If sh.Name <> "План" And sh.Name <> "литье" Then
With sh sh.Activate ActiveSheet.Range(Cells(17, 1), Cells(SO1, SO)).AutoFilter Field:=2
Sub d() On Error Resume Next For Each sh In ActiveWorkbook.Sheets sh.ShowAllData Next End Sub
[/vba] не увидел что по 2-му столбцу.... Тогда так: [vba]
Код
Sub dd() Dim sh As Worksheet On Error Resume Next For Each sh In ActiveWorkbook.Sheets Set fR = sh.AutoFilter.Range fR.AutoFilter Field:=2 Next End Sub
Sub d() On Error Resume Next For Each sh In ActiveWorkbook.Sheets sh.ShowAllData Next End Sub
[/vba] не увидел что по 2-му столбцу.... Тогда так: [vba]
Код
Sub dd() Dim sh As Worksheet On Error Resume Next For Each sh In ActiveWorkbook.Sheets Set fR = sh.AutoFilter.Range fR.AutoFilter Field:=2 Next End Sub
Sub Reset_All_Sheets_Filters() ' сброс всех фильтров на всех листах активной книги Dim actShName$: actShName = ActiveSheet.Name Dim actCelAdr$: actCelAdr = ActiveCell.Address Application.ScreenUpdating = False Dim wsSh As Worksheet On Error Resume Next For Each wsSh In Sheets If wsSh.AutoFilterMode Then wsSh.ShowAllData Next Application.ScreenUpdating = True Sheets(actShName).Activate: Range(actCelAdr).Activate End Sub
[/vba]
[vba]
Код
Sub Reset_All_Sheets_Filters() ' сброс всех фильтров на всех листах активной книги Dim actShName$: actShName = ActiveSheet.Name Dim actCelAdr$: actCelAdr = ActiveCell.Address Application.ScreenUpdating = False Dim wsSh As Worksheet On Error Resume Next For Each wsSh In Sheets If wsSh.AutoFilterMode Then wsSh.ShowAllData Next Application.ScreenUpdating = True Sheets(actShName).Activate: Range(actCelAdr).Activate End Sub