Gerar ID Automático Excel VBA sem LOOP
Вставка
- Опубліковано 15 жов 2024
- Como gerar ID Automaticamente com Excel VBA sem precisar de Loop para percorrer as células da planilha e também sem precisar localizar a última célula com dados. Utilizando função do Excel conseguimos gerar o próximo ID de forma automática pelo vba. Retornando o maior número de um intervalo e somando mais um para ter o próximo identificador único de cada linha da planilha Excel, chamado de id.
✅Site SGP: Venda de Coleção de Planilhas Excel VBA Prontas:
www.planilhasc...
==========================================
Muito grato mestre, esta função MAX, resolveu meu problema com código automático em um pequeno sistema de cadastro VBA/POO, OBRIGADO!
Que bom que ajudou
Parabéns pelo conteúdo, tem me ajudado muito. Deus te abençoes muito.
Obrigado, que bom que ajudou.
Show de bola. Obrigado por compartilhar o seu conhecimento.
Boa noite, obrigado.
Obrigado professor!!!
Excelente tutorial.
Agiliza o sistema.
Boa noite, obrigado.
muito top! eu conseguiria limitar esse contar para que ele se repetisse. tipo um loop de 1 a 100?
Boa tarde, obrigado, de loop tem o vídeo no link a seguir. ua-cam.com/video/CaBMdrIWFp4/v-deo.html
@@CanalSGP obrigado por responder tentei um código semelhante mas ele não entra no contador e aparece a mensgem de erro
Sub macro_Loop_until()
On Error GoTo Erro
Dim linha As Double
Dim contador As Double
contador = 1
linha = 1
With dados
Do
If .Cells(linha, 3).Value "" Then
.Cells(linha, 2).Value = contador
End If
contador = contador + 1
linha = linha + 1
Loop Until .Cells(linha, 3).Value = ""
End With
Exit Sub
Erro:
MsgBox "Erro!", vbCritical, "ERRO"
End Sub
tem ideia de onde poso estar errando. Lembrando que pretendo fazer um contador de 1 a 100 tendo como condição a coluna seguinte ser maior do que zero.
desde já agradeço pela dica
Boa tarde, não testei, mas vai ser mais ou menos igual ao código ajustado abaixo.
Sub macro_Loop_until()
On Error GoTo Erro
Dim linha As Double
Dim contador As Double
contador = 1
linha = 1
With dados
Do
If .Cells(linha, 3).Value "" Then
.Cells(linha, 2).Value = contador
End If
contador = contador + 1
linha = linha + 1
Loop Until Contador
@@CanalSGPBoa noite! obrigado !
testei aqui e contou somente a primeira linha da celula 2 , ou seja, não incrementou a contagem até 100. Mas obrigado caso possa me dar uma sugestão do que melhor fazer ficarei grato. Enquanto isso vou tentando e se tiver êxito te falo.
Bom dia, se na coluna três for vazio não vai contar.
If .Cells(linha, 3).Value "" Then
Oi professor. Gostaria de saber se no canal tem algum vídeo ensinando algum código que ao excluir algum registro, os IDs reorganiza automaticamente. Porque quando deletamos algum registro, os IDs ficam todos bagunçados. Desde já agradeço e muito obrigado.
Bom dia, não tenho vídeo sobre este tema. Mas talvez um loop pela coluna colocando novamente todos os ids.
O ideal é apagar o ID definitivamente, ou criar um campo que sinalize como deletado, ID´s em banco de dados não podem ser reutilizados.
Tenho uma outra dúvida. Só pra eu ver se entendi. A primeira linha de comando do seu código é para informar que está sendo iniciada na linha 2?
Bom dia, não exatamente, o dois se refere a uma célula vazia acima do cabeçalho + 1 para cair na próxima linha vazia. Mas para simplificar, se não tem dados acima do cabeçalho, basta informar o número da linha do cabeçalho.
É like sem pensar! Grato.
Obrigado pelo like
muito bom sempre quis fazer dessa forma
Obrigado
Muito obrigado! O senhor sabe me informar onde eu posso contratar uma pessoa para fazer um formulário para mim?
Bom dia, no grupo no Facebook tem um pessoal que faz, segue link. facebook.com/groups/ExcelSolucoesVBA
Olá gostaria de saber se é possível Concatenar um "." ponto ao numerador automático ?
Boa tarde, se colocar ponto não vai funcionar a geração de id com esta função, porque número com ponto pode ser entendido pelo Excel como texto.
@@CanalSGP Obrigado pelo retorno! existe uma função que seja possível ?
'Private Sub CommandButton1_Click()
'Me.TextBox2 = Text
'Dim ID As Integer
'Planilha2.Select
'Planilha2.Range("b3").Select
'Planilha2.Range("b3") = "0."
'Range("B25").End(xlUp).Offset(1, 0).Select
'ID = Range("B25").End(xlUp).Offset(0, 0).Value
'Me.TextBox2 = ID + 1
'If TextBox2 = "" Then
'TextBox2 = WorksheetFunction.Max(Planilha2.Range("B1:B100")) + 1
'TextBox2 = TextBox2 & "."
'End If
nesta vem o ponto mas não consigo concatenar o Textebox1 com o textbox2 de maneira que junte ( Exemplo (1.xxx xxx) é uma necessidade específica.
Bom dia, acredito que vai precisar de uma coluna que tenha somente o número do código, mesmo que seja oculta. Desta forma acredito que possa fazer, capturando o maior valor da coluna numérica e concatenando as demais informações em outra coluna.
@@CanalSGP Muito obrigado ! funcionou com a concatenação obrigado mesmo pela ideia.
Professor. Tenho esta seguinte situação. Tenho duas abas. Uma lanço todas as compras gerais que não são parceladas em uma aba, vamos chamar de Plan1 e na Plan2 eu lanço as compras que fiz parceladas. Quando eu efetuo o pagamento, estas compras do Plan que estão pagas, devem ser copiadas para Plan1. Porém, cada uma destas abas tem id, correto. Ou seja, na Plan1 vamos supor que tenha 10 registros e a hora que eu clicar no botão lá na Plan2 para copiar estas faturas que estão pagas lá para Plan1, ela vai deletar estas linhas da Plan2, porém, ela vai ter que alterar o id, pois pode ser que já tenha a mesma id na Plan1. Agora vem a pergunta. Como faço para continuar dos ids já existentes da Plan1?
Boa noite, talvez seja mais fácil copiar os dados normalmente e fazer um loop percorrendo a coluna ID e reorganizando em sequência novamente.
Em 4:12, se eu criar ali no userfom um campo "Id" com uma txt box, como eu faço pra fazer referencia desse campo com o ID da planilha? Pra automaticamente o próximo ID do próximo cadastro também aparecer no userform
Boa tarde, o código vai ser o mesmo, mas colocado no evento exit ou change de outro objeto, pode ser textbox, combobox.
@@CanalSGP pode gravar um video ou reels ensinando como por gentileza?
Bom dia, vai ser procedimento semelhante ao do vídeo a seguir, mesmo evento. ua-cam.com/video/mvmEGmeDdgs/v-deo.html
Não funcionou. retornou "Erro Execução 424 Objeto é obrigatório" logo em "Linha = WorksheetFunction.CountA(teste.Range("A:A")) + 2"
Tentei excluir a primeira linha de comando, dado que inicio em a2 mas tbm não funcionou, dando erro em "ID = WorksheetFunction.Max(teste.Range("A:A")) + 1"
Bom dia, pela mensagem se trata de erro de referência a guia da planilha, o nome interno do vba da guia não deve ser teste.
@@CanalSGP Era isso mesmo. Muito obrigado pelo esclarecimento!
De nada.
Boa tarde, fiz o processo, porem o codigo nao esta pulando a linha e nao esta exibindo o numero do ID na coluna A, conforme esta a minha tabela! Poderia me ajudar?
Boa tarde, teste um exemplo igual ao do vídeo, depois que funcionar tenta adaptar.
@@CanalSGP irei tentar! obrigado pelo Retorno! 🙏🏾
De nada.
Muito bom 👏👏👏
Obrigado 👍
Show!!!
Obrigado
como clicar em uma celula vazia e aparecer o numero pré escolhido?
Bom dia, não fiz algo assim ainda.
no meu caso deu erro 1004 vba erro de definição de aplicativo ou definição de objeto (linha=0)
Boa tarde, acredito que variável linha não pode ser igual a zero, porque não tem linha zero no Excel, começa a partir da linha 1.
@@CanalSGP obrigado 🤝
De nada
❤❤❤
Obrigado