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

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

Consegui criar caixas de seleção para mostrar/ocultar linhas específicas em meu documento 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 atualizar o intervalo ao inserir linhas acima desse intervalo.

Estava tentando encontrar a célula na qual o intervalo começa e depois adicionar 2 ao intervalo, mas não tenho certeza de como fazer isso.

Saúde

Roberto

Responder1

Rastrear e gerenciar adição/exclusão de linhas pode ser extremamente difícil (certifique-se de capturá-lo sempre, também é necessário modificar o próprio código para o novo número de linha ou armazená-lo em algum lugar de uma planilha...), sugiro usar alguma solução alternativa.

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

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

insira a descrição da imagem aqui

  1. Outra opção poderia ser buscar informações específicas na planilha e realizar suas ações com base nelas, porém novamente é bastante complexo.

Responder2

Presumo que você tenha um código funcional para mostrar/ocultar essas linhas e que seu problema é apenas encontrar a linha depois de inserir as linhas acima.

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

Simplesmente dê um nome (por exemplo, ToBeHidden) a algumas células (por exemplo A26:A28, não há necessidade de nomear as linhas inteiras) e use este 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 você tiver muitos, precisará de algo mais poderoso. Talvez adicione uma coluna dedicada para ativar esse recurso.

Responder3

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 oculto das linhas inseridas ou excluídas.

Primeiro, nomeie o intervalo oculto A26:A28e 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ê deseja contar apenas as linhas inseridas, altere a última If...para

If rng1.Row > lngRow Then
    MsgBox rng1.Row - lngRow & " Rows Inserted"
End If

informação relacionada