Добрый день! Прошу помощи в решении следующей задачи: есть таблица в которой присутствуют пустые ячейки и ячейки с нулями, и ячейки с формулами (результатом подсчета которых, может быть равен 0, либо пусто). Так вот, необходимо нажатием кнопки скрывать пустые и нулевые строки и столбцы (в том числе и ячейки где стоит формула, если результата по ней нет). Кое-что я написал сам, но мне удалось скрыть только столбцы, где отсутствуют какие-либо значения (для наглядности закрасил желтым), а со строчками где результат равен 0 и с столбцами где результат тоже равен 0, но есть формула, беда (их я закрасил красным). P.S. Заранее спасибо, кто откликнулся!
Добрый день! Прошу помощи в решении следующей задачи: есть таблица в которой присутствуют пустые ячейки и ячейки с нулями, и ячейки с формулами (результатом подсчета которых, может быть равен 0, либо пусто). Так вот, необходимо нажатием кнопки скрывать пустые и нулевые строки и столбцы (в том числе и ячейки где стоит формула, если результата по ней нет). Кое-что я написал сам, но мне удалось скрыть только столбцы, где отсутствуют какие-либо значения (для наглядности закрасил желтым), а со строчками где результат равен 0 и с столбцами где результат тоже равен 0, но есть формула, беда (их я закрасил красным). P.S. Заранее спасибо, кто откликнулся!Владимир42ru
Private Sub CommandButton1_Click() Application.ScreenUpdating = 0: Application.EnableEvents = 0 Dim Rng, ResRng As Range If CommandButton1.Caption = "Скрыть пустые столбцы" Then Set Rng = Range("F5:J5").Find(Empty, LookIn:=xlValues) If Not Rng Is Nothing Then Set ResRng = Rng firstAddress = Rng.Address Do Set Rng = Range("F5:J5").FindNext(Rng) Set ResRng = Union(ResRng, Rng) Loop While Not Rng Is Nothing And Rng.Address <> firstAddress ResRng.EntireColumn.Hidden = 1 End If Set Rng = Range("L6:L19").Find(Empty, LookIn:=xlValues) If Not Rng Is Nothing Then Set ResRng = Rng firstAddress = Rng.Address Do Set Rng = Range("L6:L19").FindNext(Rng) Set ResRng = Union(ResRng, Rng) Loop While Not Rng Is Nothing And Rng.Address <> firstAddress ResRng.EntireRow.Hidden = 1 End If CommandButton1.Caption = "Отразить все столбцы" Else Range("F5:J5").Columns.Hidden = False Range("L6:L19").Rows.Hidden = False CommandButton1.Caption = "Скрыть пустые столбцы" End If Application.ScreenUpdating = 1: Application.EnableEvents = 1 End Sub
[/vba]
как-то так [vba]
Код
Private Sub CommandButton1_Click() Application.ScreenUpdating = 0: Application.EnableEvents = 0 Dim Rng, ResRng As Range If CommandButton1.Caption = "Скрыть пустые столбцы" Then Set Rng = Range("F5:J5").Find(Empty, LookIn:=xlValues) If Not Rng Is Nothing Then Set ResRng = Rng firstAddress = Rng.Address Do Set Rng = Range("F5:J5").FindNext(Rng) Set ResRng = Union(ResRng, Rng) Loop While Not Rng Is Nothing And Rng.Address <> firstAddress ResRng.EntireColumn.Hidden = 1 End If Set Rng = Range("L6:L19").Find(Empty, LookIn:=xlValues) If Not Rng Is Nothing Then Set ResRng = Rng firstAddress = Rng.Address Do Set Rng = Range("L6:L19").FindNext(Rng) Set ResRng = Union(ResRng, Rng) Loop While Not Rng Is Nothing And Rng.Address <> firstAddress ResRng.EntireRow.Hidden = 1 End If CommandButton1.Caption = "Отразить все столбцы" Else Range("F5:J5").Columns.Hidden = False Range("L6:L19").Rows.Hidden = False CommandButton1.Caption = "Скрыть пустые столбцы" End If Application.ScreenUpdating = 1: Application.EnableEvents = 1 End Sub