Numeração Automática no Excel com VBA
Autor: Ivair Ferrari | Publicado: 2016-12-01T18:00:00-02:00




Numeração Automática no Excel com VBA (Macro)





Quando desenvolvemos aplicativos (softwares ou alguma outra solução) em Excel precisamos criar uma coluna com Numeração&nbsp;Automática&nbsp;(conhecida&nbsp;por ID (sequência lógica de números)).



Existem várias maneiras de fazer isso. Esta postagem estará abordando duas maneiras de fazer isto&nbsp;através&nbsp;das macros (VBA).




1. Numeração Automática&nbsp;sem Interrupção 


 O script (macro) a seguir pode ser utilizado para inclusão de numeração automática sem&nbsp;interrupção&nbsp;ou seja, toda vez que um novo item for adicionado na base, toda a numeração é refeita e, se algum item tiver sido excluído, a numeração é ajustada.





A figura ao lado demonstra o exemplo citado. Na planilha mais a esquerda vemos uma numeração com a falta de três números: 3, 4 e 7.



Depois que rodamos a Macro, a numeração é refeita e ajustada conforme planilha mais a direita&nbsp;e o número sequencial adicionado é o 7.







Macro: Numeração automática sem interrupção:





&nbsp; &nbsp;Sub numeração_sem_interrupcao()
&nbsp; &nbsp; &nbsp; &nbsp;i = Plan1.Cells(Cells.Rows.Count, "a").End(xlUp).Row + 1
&nbsp; &nbsp; &nbsp; &nbsp;For j = 2 To i
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If IsNumeric(Plan1.Cells(j - 1, 1)) Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(j, 1) = Plan1.Cells(j - 1, 1) + 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(j, 1) = 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; End If
&nbsp; &nbsp; &nbsp; &nbsp;Next

&nbsp; &nbsp;End Sub




Explicações sobre a macro:

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;i = Plan1.Cells(Cells.Rows.Count, "a").End(xlUp).Row + 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Encontra a última linha com informações e avança mais uma linha.


&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;For j = 2 To i &nbsp; &nbsp;&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;... &nbsp; &nbsp;&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Next
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Faz um loop (ciclo), ou percorre até que a variável "j" seja igual a variável "i".

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;If &nbsp; &nbsp;... &nbsp; &nbsp;Else &nbsp; &nbsp;... &nbsp; &nbsp;End If
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Condições "Se ..." e "Senão ...". Se a primeira condição for atendida, sendo um valor numérico (If IsNumeric(Plan1.Cells(j - 1, 1)) Then) executa a linha depois do "If": (Plan1.Cells(j, 1) = Plan1.Cells(j - 1, 1) + 1); senão, executa a linha depois do "Else": (Plan1.Cells(j, 1) = 1).



2. Numeração Automática&nbsp;com Interrupção





O script (macro) a seguir, assim como o anterior, pode ser utilizado para inclusão de numeração automática. A diferença é que toda vez que um novo item for adicionado na base, a numeração não é refeita. Apenas um número sequencial é adicionado na primeira linha em branco que for encontrada adicionando o valor 1 ao valor da célula anterior (acima).






A figura ao lado demonstra o exemplo citado. Na planilha mais a esquerda vemos uma numeração com a falta de três números: 3, 4 e 7.



Depois que rodamos a Macro, a numeração&nbsp;NÃO&nbsp;é refeita conforme planilha mais a direita e o número sequencial adicionado é o 10 (somasse&nbsp;o valor da célula anterior 9, + 1).









Macro: Numeração automática com interrupção:





&nbsp; &nbsp;Sub numeração_com_interrupcao()
&nbsp; &nbsp; &nbsp; j = Plan1.Cells(Cells.Rows.Count, "a").End(xlUp).Row + 1
&nbsp; &nbsp; &nbsp; &nbsp;'For j = 2 To i
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If IsNumeric(Plan1.Cells(j - 1, 1)) Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(j, 1) = Plan1.Cells(j - 1, 1) + 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Plan1.Cells(j, 1) = 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; End If
&nbsp; &nbsp; &nbsp; &nbsp;'Next

&nbsp; &nbsp;End Sub






Explicações sobre a macro:

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Seguir as mesmas explicações/orientações do Script anterior com exclusão de:&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; For j = 2 To i &nbsp; &nbsp;&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;... &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Next&nbsp;&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(conforme&nbsp;apresentado na macro acima).



Na postagem Série: ListView para Excel e VBA - Modificando Dados (2)&nbsp;pode ser encontrado outro exemplo de numeração automática.&nbsp;Poderá&nbsp;encontrar&nbsp;também&nbsp;outros exemplos citados em outras matérias aqui no&nbsp;ExcelMax® Soluções.



Compartilhe com seus amigos&nbsp;enviando-lhes e-mails, divulgando nas&nbsp;Redes Sociais, por&nbsp;telefone,&nbsp;falando-lhes pessoalmente&nbsp;ou da forma que puder e desejar.Você pode fazer parte da Comunidade&nbsp;ExcelMax® Soluções. Para isso, basta acessar e inscrever-se. Desta forma, a cada nova publicação você estará recebendo informações em seu e-mail.Abraço a Todos!Professor e Consultor: Ivair Claudio Ferrari.