Gerar ID Automático Excel VBA sem LOOP

Поделиться
HTML-код
  • Опубликовано: 14 окт 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...
    ==========================================

Комментарии • 57

  • @dejalbasbarbosacordeiro5071
    @dejalbasbarbosacordeiro5071 3 месяца назад +1

    Muito grato mestre, esta função MAX, resolveu meu problema com código automático em um pequeno sistema de cadastro VBA/POO, OBRIGADO!

    • @CanalSGP
      @CanalSGP  3 месяца назад

      Que bom que ajudou

  • @_cheba892
    @_cheba892 Год назад +1

    Parabéns pelo conteúdo, tem me ajudado muito. Deus te abençoes muito.

    • @CanalSGP
      @CanalSGP  Год назад

      Obrigado, que bom que ajudou.

  • @wilsonlopesjunior1043
    @wilsonlopesjunior1043 3 года назад +2

    Show de bola. Obrigado por compartilhar o seu conhecimento.

    • @CanalSGP
      @CanalSGP  3 года назад +1

      Boa noite, obrigado.

  • @claudiobombeiro
    @claudiobombeiro 3 года назад +1

    Obrigado professor!!!
    Excelente tutorial.
    Agiliza o sistema.

    • @CanalSGP
      @CanalSGP  3 года назад

      Boa noite, obrigado.

  • @mr.oliveira
    @mr.oliveira 3 года назад +1

    É like sem pensar! Grato.

    • @CanalSGP
      @CanalSGP  3 года назад

      Obrigado pelo like

  • @waguardia
    @waguardia 2 года назад +1

    muito bom sempre quis fazer dessa forma

  • @levandoavida3236
    @levandoavida3236 Год назад

    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.

    • @CanalSGP
      @CanalSGP  Год назад

      Bom dia, não tenho vídeo sobre este tema. Mas talvez um loop pela coluna colocando novamente todos os ids.

    • @iqluiz
      @iqluiz Год назад

      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.

  • @fabriciopereira9641
    @fabriciopereira9641 7 месяцев назад

    muito top! eu conseguiria limitar esse contar para que ele se repetisse. tipo um loop de 1 a 100?

    • @CanalSGP
      @CanalSGP  7 месяцев назад

      Boa tarde, obrigado, de loop tem o vídeo no link a seguir. ruclips.net/video/CaBMdrIWFp4/видео.html

    • @fabriciopereira9641
      @fabriciopereira9641 7 месяцев назад

      @@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

    • @CanalSGP
      @CanalSGP  7 месяцев назад +1

      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

    • @fabriciopereira9641
      @fabriciopereira9641 7 месяцев назад

      @@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.

    • @CanalSGP
      @CanalSGP  7 месяцев назад

      Bom dia, se na coluna três for vazio não vai contar.
      If .Cells(linha, 3).Value "" Then

  • @kelvinMovies
    @kelvinMovies 2 года назад

    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?

    • @CanalSGP
      @CanalSGP  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.

  • @kainaaguiarferreira4351
    @kainaaguiarferreira4351 3 года назад

    Muito obrigado! O senhor sabe me informar onde eu posso contratar uma pessoa para fazer um formulário para mim?

    • @CanalSGP
      @CanalSGP  3 года назад

      Bom dia, no grupo no Facebook tem um pessoal que faz, segue link. facebook.com/groups/ExcelSolucoesVBA

  • @denilsonsilva3366
    @denilsonsilva3366 2 года назад +1

    Muito bom 👏👏👏

  • @Tadeucichinelli1940
    @Tadeucichinelli1940 Год назад

    Olá gostaria de saber se é possível Concatenar um "." ponto ao numerador automático ?

    • @CanalSGP
      @CanalSGP  Год назад

      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.

    • @Tadeucichinelli1940
      @Tadeucichinelli1940 Год назад

      @@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.

    • @CanalSGP
      @CanalSGP  Год назад

      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.

    • @Tadeucichinelli1940
      @Tadeucichinelli1940 Год назад

      @@CanalSGP Muito obrigado ! funcionou com a concatenação obrigado mesmo pela ideia.

  • @johngregory4809
    @johngregory4809 Год назад

    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

    • @CanalSGP
      @CanalSGP  Год назад

      Boa tarde, o código vai ser o mesmo, mas colocado no evento exit ou change de outro objeto, pode ser textbox, combobox.

    • @johngregory4809
      @johngregory4809 Год назад

      @@CanalSGP pode gravar um video ou reels ensinando como por gentileza?

    • @CanalSGP
      @CanalSGP  Год назад

      Bom dia, vai ser procedimento semelhante ao do vídeo a seguir, mesmo evento. ruclips.net/video/mvmEGmeDdgs/видео.html

  • @kelvinMovies
    @kelvinMovies 2 года назад

    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?

    • @CanalSGP
      @CanalSGP  2 года назад

      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.

  • @thiagobarcelos925
    @thiagobarcelos925 Год назад

    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?

    • @CanalSGP
      @CanalSGP  Год назад

      Boa tarde, teste um exemplo igual ao do vídeo, depois que funcionar tenta adaptar.

    • @thiagobarcelos925
      @thiagobarcelos925 Год назад

      @@CanalSGP irei tentar! obrigado pelo Retorno! 🙏🏾

    • @CanalSGP
      @CanalSGP  Год назад

      De nada.

  • @leandrolamindepaulapereira9485
    @leandrolamindepaulapereira9485 3 года назад +1

    Show!!!

  • @leotristao3865
    @leotristao3865 Год назад +1

    Não funcionou. retornou "Erro Execução 424 Objeto é obrigatório" logo em "Linha = WorksheetFunction.CountA(teste.Range("A:A")) + 2"

    • @leotristao3865
      @leotristao3865 Год назад

      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"

    • @CanalSGP
      @CanalSGP  Год назад +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.

    • @leotristao3865
      @leotristao3865 Год назад

      @@CanalSGP Era isso mesmo. Muito obrigado pelo esclarecimento!

    • @CanalSGP
      @CanalSGP  Год назад

      De nada.

  • @edhermarco1
    @edhermarco1 2 года назад

    ❤❤❤

  • @kakasantos8545
    @kakasantos8545 2 года назад

    como clicar em uma celula vazia e aparecer o numero pré escolhido?

    • @CanalSGP
      @CanalSGP  2 года назад

      Bom dia, não fiz algo assim ainda.

  • @jorderdabney3194
    @jorderdabney3194 2 года назад

    no meu caso deu erro 1004 vba erro de definição de aplicativo ou definição de objeto (linha=0)

    • @CanalSGP
      @CanalSGP  2 года назад +1

      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.

    • @jorderdabney3194
      @jorderdabney3194 2 года назад +1

      @@CanalSGP obrigado 🤝

    • @CanalSGP
      @CanalSGP  2 года назад

      De nada