Código VBA para contabilizar a inserção de linhas após o fato.

-1

Eu consegui criar caixas de seleção para mostrar / ocultar linhas específicas no meu documento do Excel usando o seguinte Código

If CheckBox1.Value = True Then Rows("26:28").EntireRow.Hidden = False
If CheckBox1.Value = False Then Rows("26:28").EntireRow.Hidden = True

No entanto, preciso poder atualizar o intervalo ao inserir linhas acima desse intervalo.

Estava tentando encontrar a célula na qual o intervalo começa e, em seguida, adicionando 2 ao intervalo, mas não muito certo de como fazê-lo.

Felicidades

Robert

    
por Robert Kemm 06.04.2018 / 05:30

3 respostas

3

Acompanhar e gerenciar adição / exclusão de linhas pode ser extremamente difícil (certifique-se de capturá-la sempre, modificar o próprio código para o novo número de linha ou armazená-lo em algum lugar em uma folha ...), I sugerir usar alguma solução alternativa.

  1. Use um intervalo nomeado: os intervalos nomeados são deslocados junto com as células, então referenciá-los sempre se referirá às mesmas células.

    • No exemplo abaixo, A6: A7 é um intervalo nomeado e o código de amostra mostra / esconde-o.

  • Outra opção seria procurar informações específicas na planilha e fazer suas ações com base nisso, mas é bastante complexo novamente.
  • por 06.04.2018 / 12:07
    1

    Suponho que você tenha um código de trabalho para mostrar / ocultar essas linhas, e que seu problema é apenas encontrar a linha depois que você inseriu as linhas acima.

    Se você tiver apenas um intervalo para mostrar / ocultar, poderá usar um intervalo nomeado. Quando novas linhas acima, o intervalo nomeado continuará apontando para as mesmas linhas.

    Basta atribuir um nome (por exemplo, ToBeHidden ) a algumas células (por exemplo, A26:A28 , não é necessário nomear as linhas inteiras) e usar esse código para alterná-las:

    With ActiveSheet.Range("ToBeHidden").EntireRow
        If .Hidden = True Then
            .Hidden = False
        Else
            .Hidden = True
        End If
    End With
    

    É fácil alternar com um conjunto de linhas, mas, se tiver muitas, precisará de algo mais poderoso. Talvez adicione uma coluna dedicada para ativar esse recurso.

        
    por 06.04.2018 / 12:07
    -2

    Como o objetivo do OP é "detectar se e quantas linhas foram inseridas", o que você pode encontrar nos comentários acima de Máté Juhász, a solução deve rastrear o intervalo de dados ocultos para linhas inseridas ou excluídas .

    Primeiro, nomeie o intervalo oculto A26:A28 e use o seguinte código VBA para rastrear o número de linhas inseridas ou excluídas.

    Private Sub Worksheet_Change(ByVal Target As Range)
        Static lngRow As Long
        Dim rng1 As Range
        Set rng1 = ThisWorkbook.Names("Named Range").RefersToRange
        If lngRow = 0 Then
        lngRow = rng1.Row
            Exit Sub
        End If
        If rng1.Row = lngRow Then Exit Sub
        If rng1.Row < lngRow Then
            MsgBox lngRow - rng1.Row & " Row Deleted"
        Else
            MsgBox rng1.Row - lngRow & " Rows Inserted"
        End If
        lngRow = rng1.Row
    End Sub
    

    Nota: Se você quiser apenas contar as linhas inseridas, altere o último If... para

    If rng1.Row > lngRow Then
        MsgBox rng1.Row - lngRow & " Rows Inserted"
    End If
    
        
    por 06.04.2018 / 13:06