Здравствуйте подскажите как можно скрыть строки с датами больше текущей например сегодня 17.05.2017 нужно чтоб все строки с датами 18.05.2017 и так далее были скрыты, а все что раньше текущей даты отражались и желательно чтоб это происходило автоматически то есть открыл книгу 17.05.2017 показывает все предыдущие дни включая 17.05.2017, открыл книгу 18.05.2017 показывает все предыдущие дни включая 18.05.2017 Перерыл в поиске 40 страниц с подобными темами но нечего не подошло
Здравствуйте подскажите как можно скрыть строки с датами больше текущей например сегодня 17.05.2017 нужно чтоб все строки с датами 18.05.2017 и так далее были скрыты, а все что раньше текущей даты отражались и желательно чтоб это происходило автоматически то есть открыл книгу 17.05.2017 показывает все предыдущие дни включая 17.05.2017, открыл книгу 18.05.2017 показывает все предыдущие дни включая 18.05.2017 Перерыл в поиске 40 страниц с подобными темами но нечего не подошлоdima681
Вариант 2 макросом Сделал на событие при открытии книги строки скрывает (т.е. потом пользователь может отобразить) [vba]
Код
Private Sub Workbook_Open() For Each sh In ThisWorkbook.Sheets With sh r1 = .Range("A:A").Find(Date).Row r2 = .Range("a" & r1).End(xlDown).Row - 1 .Rows(r1 & ":" & r2).Hidden = True End With Next sh End Sub
[/vba] если пользователь не должен их смотреть надо переделать на другое событие
Вариант 2 макросом Сделал на событие при открытии книги строки скрывает (т.е. потом пользователь может отобразить) [vba]
Код
Private Sub Workbook_Open() For Each sh In ThisWorkbook.Sheets With sh r1 = .Range("A:A").Find(Date).Row r2 = .Range("a" & r1).End(xlDown).Row - 1 .Rows(r1 & ":" & r2).Hidden = True End With Next sh End Sub
[/vba] если пользователь не должен их смотреть надо переделать на другое событиеsboy
dima681, А если про макрос, то поправил под новый пример [vba]
Код
Private Sub Workbook_Open() For Each sh In ThisWorkbook.Sheets With sh On Error Resume Next r1 = .Range("A:A").Find(Date).Row Select Case Err.Number Case 0 r2 = .Cells(Rows.Count, 1).End(xlUp).Row - 1 .Rows(r1 & ":" & r2).Hidden = True Exit For Case Else Err.Clear End Select End With Next sh End Sub
[/vba]
dima681, А если про макрос, то поправил под новый пример [vba]
Код
Private Sub Workbook_Open() For Each sh In ThisWorkbook.Sheets With sh On Error Resume Next r1 = .Range("A:A").Find(Date).Row Select Case Err.Number Case 0 r2 = .Cells(Rows.Count, 1).End(xlUp).Row - 1 .Rows(r1 & ":" & r2).Hidden = True Exit For Case Else Err.Clear End Select End With Next sh End Sub
dima681, Теперь понял. скрыли, а отобразить забыли! [vba]
Код
Private Sub Workbook_Open() Application.ScreenUpdating = False For Each sh In ThisWorkbook.Sheets With sh On Error Resume Next r1 = .Range("A:A").Find(Date).Row Select Case Err.Number Case 0 For Each r In .UsedRange.Rows If r.EntireRow.Hidden = True Then r.EntireRow.Hidden = False Next r r2 = .Cells(Rows.Count, 1).End(xlUp).Row - 1 .Rows(r1 & ":" & r2).Hidden = True Exit For Case Else Err.Clear End Select End With Next sh Application.ScreenUpdating = True End Sub
[/vba]
dima681, Теперь понял. скрыли, а отобразить забыли! [vba]
Код
Private Sub Workbook_Open() Application.ScreenUpdating = False For Each sh In ThisWorkbook.Sheets With sh On Error Resume Next r1 = .Range("A:A").Find(Date).Row Select Case Err.Number Case 0 For Each r In .UsedRange.Rows If r.EntireRow.Hidden = True Then r.EntireRow.Hidden = False Next r r2 = .Cells(Rows.Count, 1).End(xlUp).Row - 1 .Rows(r1 & ":" & r2).Hidden = True Exit For Case Else Err.Clear End Select End With Next sh Application.ScreenUpdating = True End Sub