Страницы: 1
RSS
Скрыть и показать строки по условию
 
Здравствуйте!
В моей диаграмме Ганта хочу сворачивать и разворачивать разделы, т.е. хочу сделать так, чтобы при активации одной и той же ячейки соответствующие строки то скрывались, то показывались, а в самой ячейке попеременно появлялся значок такой "[-]" или такой "[+]".
С одной строкой, как частный случай, у меня получилось ( файл "проба-01"). А вот в цикле - никак не могу сообразить (файл "Проба-02).
При активации ячейки "В7" должны скрываться (или появляться) все строки работ, по всей таблице.
А при активации, например, ячейки "В13" должны скрываться/показываться работы, относящиеся только к разделу "Проектные работы".
Прошу помощи, сам разобраться не могу уже почти сутки (с перерывом на обед и ужин).
:)
 
Доработаете думаю
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cell As Range, i As Long, lr As Long
If Not Intersect(Target, Target.Worksheet.Columns(2)) Is Nothing Then
lr = Cells(Rows.Count, 4).End(xlUp).Row + 10
    If Target.Row = 7 Then

        For i = 9 To lr
            If Cells(i, 2) = "" Then
                If cell Is Nothing Then
                    Set cell = Cells(i, 2)
                Else
                    Set cell = Union(cell, Cells(i, 2))
                End If
            End If
        Next i
        If Target = "[+]" Then
            If Not cell Is Nothing Then cell.EntireRow.Hidden = False
            Target = "[-]"
        Else
            If Not cell Is Nothing Then cell.EntireRow.Hidden = True
            Target = "[+]"
        End If
    Else
        If Target.Offset(0, -1) <> "" And Target <> "" And Target.Offset(0, 1) <> "" Then
            For i = Target.Row + 1 To lr
                If Cells(i, 2) = "" Then
                    If cell Is Nothing Then
                        Set cell = Cells(i, 2)
                    Else
                        Set cell = Union(cell, Cells(i, 2))
                    End If
                Else
                    Exit For
                End If
            Next i
        If Target = "[+]" Then
            If Not cell Is Nothing Then cell.EntireRow.Hidden = False
            Target = "[-]"
        Else
            If Not cell Is Nothing Then cell.EntireRow.Hidden = True
            Target = "[+]"
        End If
        End If
    End If
End If
End Sub
Изменено: Mershik - 21.10.2020 22:14:46
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, моя благодарность. Ушёл разбираться.
______________________________
Через полчаса:
Да дорабатывать придётся: данный макрос конфликтует с другими, которые формируют график.
Изменено: MrBrown - 21.10.2020 23:02:42
Страницы: 1
Наверх