А как Вы себе это представляете? Ну ладно, скрыть еще можно, а вот отобразить-то как, если ячейка, на которую кликать нужно, скрыта? Куда Вы кликать будете? Кстати, можно самими крестиками не пользоваться. Видите над ними вверху цифры 1, 2 и 3? понажимайте на них, может, Вас это устроит?
А как Вы себе это представляете? Ну ладно, скрыть еще можно, а вот отобразить-то как, если ячейка, на которую кликать нужно, скрыта? Куда Вы кликать будете? Кстати, можно самими крестиками не пользоваться. Видите над ними вверху цифры 1, 2 и 3? понажимайте на них, может, Вас это устроит?_Boroda_
представляю так: по клику на ячейку B6 скрываются строки 7-16. ещё один клик по ячейке B6 - строки отображаются. по клику на ячейку С7 - скрываются/отображаются строки 8-9 ну и так далее
ячейки по которым кликаем никуда не скрываются в идеале должен получится управляемый кликами по заголовкам многоуровневый список
представляю так: по клику на ячейку B6 скрываются строки 7-16. ещё один клик по ячейке B6 - строки отображаются. по клику на ячейку С7 - скрываются/отображаются строки 8-9 ну и так далее
ячейки по которым кликаем никуда не скрываются в идеале должен получится управляемый кликами по заголовкам многоуровневый списокilikeread
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'If Intersect(Target, UsedRange) Is Nothing Then Exit Sub'Не нужно If Target.Count > 1 Then Exit Sub'если случайно даблкликнули на линию меж ячейками - до свидания If Target.Value = "" Then Exit Sub'если ячейка пустая - тоже If Target.Offset(1).Value <> "" Then Exit Sub'если ячейка ниже не пустая - тоже r0_ = Target.Row + 1'пусть r0_= номер строки ниже r1_ = Target.End(xlDown).Row - 1'пусть r1_=номер заполненной ячейки ниже -1 If r1_ = Rows.Count - 1 Then'если ниже заполненных нет r1_ = Range("A1").SpecialCells(xlLastCell).Row'r1_=строке последней значимой ячейке листа (Как Контрл Енд) If r1_ < r0_ Then r1_ = UsedRange.Row + UsedRange.Rows.Count'если кликнута ячкейка в последней значимой строке, то смотрим уже на UsedRange и берем на 1 больше End If Cancel = True'не проваливаться в ячейку Rows(r0_ & ":" & r1_).EntireRow.Hidden = Not Rows(r0_ & ":" & r1_).EntireRow.Hidden'скрыть строки с r0 по r1 End Sub
[/vba]
Ну тада где-то так: [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'If Intersect(Target, UsedRange) Is Nothing Then Exit Sub'Не нужно If Target.Count > 1 Then Exit Sub'если случайно даблкликнули на линию меж ячейками - до свидания If Target.Value = "" Then Exit Sub'если ячейка пустая - тоже If Target.Offset(1).Value <> "" Then Exit Sub'если ячейка ниже не пустая - тоже r0_ = Target.Row + 1'пусть r0_= номер строки ниже r1_ = Target.End(xlDown).Row - 1'пусть r1_=номер заполненной ячейки ниже -1 If r1_ = Rows.Count - 1 Then'если ниже заполненных нет r1_ = Range("A1").SpecialCells(xlLastCell).Row'r1_=строке последней значимой ячейке листа (Как Контрл Енд) If r1_ < r0_ Then r1_ = UsedRange.Row + UsedRange.Rows.Count'если кликнута ячкейка в последней значимой строке, то смотрим уже на UsedRange и берем на 1 больше End If Cancel = True'не проваливаться в ячейку Rows(r0_ & ":" & r1_).EntireRow.Hidden = Not Rows(r0_ & ":" & r1_).EntireRow.Hidden'скрыть строки с r0 по r1 End Sub
Спасибо. + в репу поставить сегодня больше не даёт.
Принцип работы понял. знаний реализовать не хватает.
А можно ли сделать чтобы разворачивалось не всё дерево сразу, а постепенно, по уровням? Для того чтобы сворачивать постепенно догадался поставить концевые метки разделов.
Вот если сделать разворачивание постепенное, то получится полная замена группировки, и наверняка не я один скажу вам спасибо.
Спасибо. + в репу поставить сегодня больше не даёт.
Принцип работы понял. знаний реализовать не хватает.
А можно ли сделать чтобы разворачивалось не всё дерево сразу, а постепенно, по уровням? Для того чтобы сворачивать постепенно догадался поставить концевые метки разделов.
Вот если сделать разворачивание постепенное, то получится полная замена группировки, и наверняка не я один скажу вам спасибо.ilikeread
На примере: глобальная идея: Замена группировки - макросом. когда мы открываем первый уровень, то мы видим заголовки второго уровня, кликая по ним, разворачиваем следующий уровень и так далее.
приложил пример группировки сделанный стандартным способом, через меню Данные-Структура. что в нём не устраивает, так это дерево из +/- слева от таблицы, которым осуществляется управление. На втором листе та же структура + Ваш макрос + метки конца разделов (можно покрасить белым), без них например при клике на D9 стуктура свернётся полностью до 28 строки.
На примере: глобальная идея: Замена группировки - макросом. когда мы открываем первый уровень, то мы видим заголовки второго уровня, кликая по ним, разворачиваем следующий уровень и так далее.
приложил пример группировки сделанный стандартным способом, через меню Данные-Структура. что в нём не устраивает, так это дерево из +/- слева от таблицы, которым осуществляется управление. На втором листе та же структура + Ваш макрос + метки конца разделов (можно покрасить белым), без них например при клике на D9 стуктура свернётся полностью до 28 строки.ilikeread