Доброго времени суток. Помогите пожалуйста. Можно ли скрыть пустые строки. Т.е. чтобы отображались только те строки в которых есть значение, а ниже текущтекущая и будущее. Если можно сделать не VBA прошу перенести тему.
Доброго времени суток. Помогите пожалуйста. Можно ли скрыть пустые строки. Т.е. чтобы отображались только те строки в которых есть значение, а ниже текущтекущая и будущее. Если можно сделать не VBA прошу перенести тему.roman66rus
Sorry, в примере в ручную скрыл не нужные строки. Можно ли так чтобы они автоматом скрывались, и при открытии файла курсор стоял на текущей дате.
Sorry, в примере в ручную скрыл не нужные строки. Можно ли так чтобы они автоматом скрывались, и при открытии файла курсор стоял на текущей дате.roman66rus
Кажется понял, что Вы хотите. Если в диапазоне ячеек С4:M6 нет значений, скрыть эти строки, и так по всем блокам, кроме блока текущей даты. Ну и поставить маркер в ячейку с текущей датой. Если бы не объединенные ячейки, я бы сделал, а с ними у меня не идёт. А вам не понадобится потом что-то вносить в скрытые ячейки? А то добраться до них только через макрос получится.
Кажется понял, что Вы хотите. Если в диапазоне ячеек С4:M6 нет значений, скрыть эти строки, и так по всем блокам, кроме блока текущей даты. Ну и поставить маркер в ячейку с текущей датой. Если бы не объединенные ячейки, я бы сделал, а с ними у меня не идёт. А вам не понадобится потом что-то вносить в скрытые ячейки? А то добраться до них только через макрос получится.Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Сообщение отредактировал Udik - Вторник, 11.08.2015, 20:29
Private Sub Workbook_Open() Dim r&, c&, rng As Range With Ëèñò1.UsedRange r = .Rows.Count - 3 c = .Columns.Count - 3 With .Cells(4, 3).Resize(r, c) .EntireRow.Hidden = True For Each rng In .SpecialCells(xlCellTypeConstants).Cells .Cells(rng.Row - 3, c).MergeArea.EntireRow.Hidden = False Next End With With .Columns(1).Find(Date) .Resize(3).EntireRow.Hidden = False .Select End With End With End Sub
[/vba]
[p.s.]Может быть несколько лишних "телодвижений" (когда в одной дате заполнено несколько ячеек), зато быстрый, простой и понятный код [/p.s.]
Добрый вечер! Как вариант: [vba]
Код
Private Sub Workbook_Open() Dim r&, c&, rng As Range With Ëèñò1.UsedRange r = .Rows.Count - 3 c = .Columns.Count - 3 With .Cells(4, 3).Resize(r, c) .EntireRow.Hidden = True For Each rng In .SpecialCells(xlCellTypeConstants).Cells .Cells(rng.Row - 3, c).MergeArea.EntireRow.Hidden = False Next End With With .Columns(1).Find(Date) .Resize(3).EntireRow.Hidden = False .Select End With End With End Sub
[/vba]
[p.s.]Может быть несколько лишних "телодвижений" (когда в одной дате заполнено несколько ячеек), зато быстрый, простой и понятный код [/p.s.]KSV
Private Sub Workbook_Open() Application.ScreenUpdating = 0 Sheets("Лист").Activate With [C4:M4].Resize(Application.CountA([B:B]) - 1) .EntireRow.Hidden = True .SpecialCells(2, 23).EntireRow.Select With .Offset(, -2).Find(Date) Union(Selection, .Resize(3)).EntireRow.Hidden = False Application.Goto .Cells, True End With End With Application.ScreenUpdating = 1 End Sub
[/vba]
еще пара вариантов 1 без макросов, фильтром по доп столбцу (O:O) с формулой
Private Sub Workbook_Open() Application.ScreenUpdating = 0 Sheets("Лист").Activate With [C4:M4].Resize(Application.CountA([B:B]) - 1) .EntireRow.Hidden = True .SpecialCells(2, 23).EntireRow.Select With .Offset(, -2).Find(Date) Union(Selection, .Resize(3)).EntireRow.Hidden = False Application.Goto .Cells, True End With End With Application.ScreenUpdating = 1 End Sub