Expandindo apenas linhas selecionadas no Excel usando Macros VBA

0

Eu escrevi o seguinte código VBA que contém uma condição onde se a célula #="Sim", em seguida, expanda a linha inferior, senão se a célula #="não", em seguida, recolher a linha inferior.

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E15").Value = "Yes" Then
ActiveSheet.Outline.ShowLevels RowLevels:=3
ElseIf Range("E15").Value = "No" Then
ActiveSheet.Outline.ShowLevels RowLevels:=8
End If
End Sub

Agora, isso parece estar funcionando bem sem problemas, mas, por algum motivo, ele expande e recolhe todas as linhas que estão no mesmo nível de linha exibido no código. O que eu realmente quero é escolher exatamente qual linha Eu quero expandir e colapsar com base na condição. '

Como você pode ver, não sou muito de um VB Pro, mas qualquer ajuda seria muito apreciada.

Obrigado!

    
por I AM L 16.07.2013 / 03:56

1 resposta

0

Se eu entendi corretamente, você deve ser capaz de definir e desmarcar a propriedade ShowDetails para expandir e recolher linhas de resumo específicas em seu esquema.

Como mostrado abaixo, Showdetails é uma propriedade de leitura / gravação de uma linha inteira (ou coluna) dentro de uma estrutura de tópicos. Para mostrar os detalhes de uma linha de resumo específica, faça referência a uma única célula nessa linha, conforme mostrado no código de exemplo abaixo. O Excel gerará um erro se você tentar definir a propriedade como True para um nível de resumo já expandido. Se a linha de resumo não estiver visível porque está recolhida em um agrupamento maior, Showdetails falhará (silenciosamente) em expandir a linha.

Option Explicit

Sub Worksheet_Change(ByVal Target As Range)
    With ActiveSheet
        If .Range("E15").Value = "Yes" Then
            With .Range("A26").EntireRow
                If .ShowDetail = False Then
                    .ShowDetail = True
                End If
            End With
        ElseIf Range("E15").Value = "No" Then
            With .Range("A45").EntireRow
                If .ShowDetail = False Then
                    .ShowDetail = True
                End If
            End With
        End If
    End With
End Sub
    
por 18.07.2013 / 06:26