FACIL | LOOP FOR NEXT no VBA no Microsoft Excel | Estruturas de Repetição

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ต.ค. 2024
  • Mas afinal, o que é um Loop? Para que serve? Nesta aula vou te ensinar de modo fácil como dominar este recurso que pode agregar muito valor a automação de seus relatórios.
    O VBA (Visual Basic for Applications) é famoso por alavancar a carreira de muitos profissionais no mercado de trabalho, porém, para obter uma produtividade acima da média é fundamental que você saiba trabalhar com esse recurso Loop "For Next".
    O Loop "For Next" é um tipo de Loop, afinal existem variados tipos de Loops no VBA.
    Por exemplo, há o "Do While", "For Next", "While Wend", "Do Until", entre outros.
    Cada um possui características próprias e nesta aula eu vou lhe explicar em detalhes como utilizar o loop "For Next"
    Bons estudos;)
    "Afinal, até seus problemas precisam evoluir!!"
    VARIÁVEIS no Microsoft Excel VBA:
    • Como Trabalhar com VAR...
    Curso Microsoft Excel - Seja Destaque no Mercado de Trabalho :
    excelonlinebra...
    Inscreva-se em nosso canal no TH-cam: excelonlinebra...
    ✅ E-book GRATUITO pra você:
    Tabelas Dinamicas - 7 Dicas Simples E Valiosas Para Ganhar Produtividade
    👉 Baixe agora e descubra!
    excelonlinebra...
    #loopar #loop #loopfornext
    ========================
    ✔ CONHEÇA NOSSO BLOG:
    excelonlinebra...
    ✔ CONHEÇA NOSSOS CURSOS:
    excelonlinebra...
    ✔ NOSSAS REDES SOCIAIS:
    Facebook : / excelonlinebrasil
    TH-cam : excelonlinebra...
    Contato comercial:
    ✉ marcusrodello@excelonlinebrasil.com
    =================
    Seja bem-vindo(a) ao canal Excel Online Brasil!
    Com vídeos semanais, o canal é apresentado por Marcus Rodello e tem como objetivo compartilhar de uma forma simples e direta um rico conteúdo para profissionais :
    querendo enriquecer seu "vocabulário" em Microsoft Excel
    buscando recolocação no Mercado de Trabalho
    almejando acelerar sua jornada rumo a uma promoção de cargo
    Queremos inspirar essas pessoas para que consigam produzir mais, aprimorem seu desempenho, alavanquem suas carreiras e multipliquem este conhecimento levando este conteúdo adiante.
    O canal também faz parte do Programa de Experts em Produtos do Google (support.google..., contribuindo para o crescimento da plataforma e dos criadores de conteúdo.
    =================
    NÃO CLIQUE AQUI: excelonlinebra...

ความคิดเห็น • 57

  • @marciocancherini4684
    @marciocancherini4684 3 ปีที่แล้ว +2

    MARCO gostei muito já havia assistido com Júlio Battisti entre outros e não havia ficado tão claro pra mim. Obrigado

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว

      Que bom que ficou claro esta aula para você Marcio, vamos sempre tentando melhorar a didática.
      Obrigado, um abs.👍

  • @mcjoy2
    @mcjoy2 ปีที่แล้ว

    Sua didática é excelente!
    Muito obrigado!

  • @NorBeSil
    @NorBeSil ปีที่แล้ว

    EXCELENTE didática. NOTA 10 ! 😀👍

  • @sergiocardosozacarias2028
    @sergiocardosozacarias2028 3 ปีที่แล้ว +2

    Show de aula, uma didática sensacional. Parabéns 👏

  • @janiobarbosa8749
    @janiobarbosa8749 2 ปีที่แล้ว

    Quem sabe agora vai conseguir apreender. Aula 10

  • @Leandro_Montanholi
    @Leandro_Montanholi 3 ปีที่แล้ว

    Show, gostei da sua didática, me inscrevi.
    Muito obrigado.

  • @MCAES01
    @MCAES01 3 ปีที่แล้ว

    muito top... bastante simples e funcional. Abre um leque para muitas outras coisas

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว

      Que bom que gostou MCAES01.👍
      Realmente, uma vez tendo compreendido bem a funcionalidade e aplicações dos Loops, seus códigos ganham asas.
      Obrigado.
      Abraço

  • @Fransuwel
    @Fransuwel 3 ปีที่แล้ว

    Muito bom! Ficou muito claro.

  • @rodrigosilveira3905
    @rodrigosilveira3905 8 หลายเดือนก่อน

    Tenho uma dúvida, preciso fazer algo parecido mas para um preenchimento automático com VBA. Quero que ele preencha uma coluna com a contagem em sequência de linhas. Ex.: 1.1.1 depois 1.1.2, 1.1.3 e assim por diante até a última linha. Qual seria a variável correta para isso?

  • @FernandodeCarvalhoNavarro
    @FernandodeCarvalhoNavarro 4 ปีที่แล้ว

    Graaaaande professor! Ótima aula. Abração!

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  4 ปีที่แล้ว

      Salve Mestre! Como sempre uma honra sua presença aqui. Espero que esteja tudo bem por aí e com muita saúde. Um abraço 👍😉

  • @marcelocampos6014
    @marcelocampos6014 2 ปีที่แล้ว

    Professor tenho dois laço de repetição uma faz pesquisa por nome, e o outro ele cópia o nome na base de dados e cola em outra planilha , gostaria de juntar as duas fórmulas numa só para fazer pesquisa de todos os nome , ex ele cola o primeiro nome e faz a pesquisa naquele nome ,depois e busca o segundo nome e faz a pesquisa .....até fazer com todos

  • @felipesignorellireis7839
    @felipesignorellireis7839 3 ปีที่แล้ว

    poderia explicar qual a diferenca do loop for next ou for each
    eu nunca sei quando devo usar ou qual devo usar.

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว

      Olá Felipe.
      Essa sua pergunta é um excelente tema para uma aula, vou incluir ela ainda para 2021.
      Mas vamos lá, basicamente, todos os tipos de Loops tem a capacidade de fazer as mesmas coisas.
      Porém, com alguns tipos é mais fácil trabalhar com objetos diretamente, outros com dados numéricos, outros com seleções sequenciais.
      Mas por fim isso acaba se tornando uma preferencia pessoal do programador com o Loop, a forma de escrever seu código, com o tempo você vai se habituar a trabalhar mais com um tipo do que outro.
      Um abraço😉👍

    • @felipesignorellireis7839
      @felipesignorellireis7839 3 ปีที่แล้ว

      @@ExcelOnlineBrasil ah entendi.
      É porque eu to iniciando e paguei um Curso e o professor usa as vezes um, outras vezes outro.
      acho ahe quando ele usa um loop pensando em analisar célula a célula da current workbook, ele usa o each para percorrer uma a uma.
      mas no geral eu sempre travo nessa parte.

  • @LuisCarlos-lf2fh
    @LuisCarlos-lf2fh ปีที่แล้ว

    Vai rolar Black friday no curso,tô interessado.

  • @niltonreboucas1872
    @niltonreboucas1872 3 ปีที่แล้ว

    Tenho uma planilha de dados e queria organizar, tem código duplicado e não duplicado,queria pular linha em branco após um código diferente automaticamente

  • @jeffersonrhoads
    @jeffersonrhoads 11 หลายเดือนก่อน

    Quero usar o for each em todas as pastas de trabalho em um mesmo diretório. Como faço para fazer o excel entender isso? Só preciso de pelo menos essa parte do código que referencie o local onde estão os arquicos excel. Agradeço dese já pela ajuda.

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  10 หลายเดือนก่อน

      Olá @jeffersonrhoads.
      Publicamos uma aula sobre isso nessa semana, segue o link : th-cam.com/users/liveYQ5SC1bmQQo
      Um abraço😉

    • @jeffersonrhoads
      @jeffersonrhoads 10 หลายเดือนก่อน

      @@ExcelOnlineBrasil agradeço pela atenção. Meu objetivo é criar uma macro para colar uma formatação de uma pasta de trabalho (nesse caso é a pasta onde está a macro), em várias outras pastas de trabalho do Excel. Eu usei a estrutura For Each e o procedimento está sendo feito, porém só está sendo feito em um dos arquivos do diretório. Quero saber como fazer o mesmo nos demais, fui informado que teria que colocar um contador. Lembrando que a quantidade de arquivos a serem formatados no diretório vai variar.
      O que falta agora é colocar esse contador.

  • @geiciara8009
    @geiciara8009 2 ปีที่แล้ว

    Eu consigo utilizar essa forma com varios produtos em diversas linhas, com filtro? Ou tem outra forma de fazer esse mesmo jeito porém incluindo mais linhas?

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  2 ปีที่แล้ว +1

      Consegue sim Geiciara. No caso da tabela estar filtrada, o loop vai passar pelas linhas que estiverem ocultas tambem.
      Abs😉

    • @geiciara8009
      @geiciara8009 2 ปีที่แล้ว

      @@ExcelOnlineBrasil Muito obrigada!

  • @henriquemurakami7996
    @henriquemurakami7996 3 ปีที่แล้ว

    Olá, estou desenvolvendo uma planilha onde preciso correr x planilhas e executar um comando Se.
    Uma dúvida, eu consigo comparar a função For com uma varíavel Boolean? Por que gostaria de inserir n checkbox e gostaria que ele corra as planilhas em TRUE.
    Por exemplo:
    Checkbox 1, 2 e 3.
    Checkbox 1 e 3 = True
    Checkbox 2 = 2 False
    Estou tentando
    For a = 2 to Sheets.Count
    If Sheets(a) = Userform1.Checkbox(a) then 'Verifica se a planilha na checkbox é true ou false
    ....
    Else
    Neste caso eu gostaria que a função faça o comando nas planilhas 1 e 3 e não na 2. Porém está dando erro.
    Teria como fazer isso?

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว

      Olá Henrique, tudo bom?
      Certamente há como fazer, mas precisaria utilizar IF com AND, pois caso atenda a condição do checkbox 1 AND do checkbox 3, aí ele executa.
      A propósito, são quanto checkbox que está utilizando?
      Abs😉

    • @henriquemurakami7996
      @henriquemurakami7996 3 ปีที่แล้ว

      @@ExcelOnlineBrasil Estou usando 24 Checkbox

  • @negociosonline40
    @negociosonline40 3 ปีที่แล้ว +1

    Minha dúvida é, como carregar uma link aguardar o carregamento e assim que a página estiver carregada continua o loop.

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว +1

      Uma sugestão seria você utilizar o código Application.Wait para que a execução dê um tempo (a ser definido) para o carregamento da página.
      Uma outra possibilidade que me ocorre caso você esteja por exemplo carregando dados de uma página para uma planilha do excel, é deixar o loop verificando as células onde a informação será carregada e quando as células não estiverem mais vazias é o indicativo de que os dados foram carregados.
      Espero haver lhe ajudado.
      Um abraço😉

    • @negociosonline40
      @negociosonline40 3 ปีที่แล้ว

      @@ExcelOnlineBrasil ideias muito boas. Deixa eu te explicar como a planilha vai funcionar:
      A planilha precisa copiar a paridade de um ativo em uma tabela, ela copia a paridade, depois cola em uma célula, esta célula com este dado é usado para montar um link dinâmico da API, logo a seguir, preciso atualizar os dados de consulta através deste link dinâmico, após os dados carregados a planilha analisa o status de algumas células, se aparece "OK" significa que as informações precisam ser colocadas em uma tabela específica e assim o loop continua.
      A parte que estou tendo problemas é fazer o loop carregar junto com a consulta, pois a consulta não carregar devido o loop não deixar carregar a consulta.

  • @adilsonaffonso394
    @adilsonaffonso394 8 หลายเดือนก่อน

    Assistindo os seus vídeos eu fiz isso amigo:
    Sub exemplo1()
    Dim valor As Double
    Dim linha As Double
    linha = 2
    valor = Cells(2, 8).Value
    For i = 1 To 500
    valor = Cells(linha, 8).Value
    Cells(linha, 8) = valor
    linha = linha + 1

    Next
    Range("h:h").Select
    Selection.NumberFormat = "#,##0.00"
    End Sub
    Básico demais né? Eu sei, mas aprendi

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  8 หลายเดือนก่อน

      Excelente Adilson. Parabéns pelo aprendizado.
      Se eu puder fazer apenas uma sugestão, ao invés de trabalhar com a variável "linha" utilize diretamente a variável do loop "i". Neste caso para fazer os 500 laços ficaria : For i=2 to 501
      Mas por favor, qual é o intuito do loop neste caso uma vez que a variavel valor coleta um valor na coluna H e posteriormente substitui ele por ele mesmo na célula?
      Um abraço

    • @adilsonaffonso394
      @adilsonaffonso394 8 หลายเดือนก่อน

      @@ExcelOnlineBrasil amigo, essa planilha que contém esses dados é oriunda de um sistema paralelo que ao fazer download dos dados desse sistema, tem pelo menos umas 8 a 10 colunas em que os números são entendidos como texto e por esse motivo tenho a necessidade de transformá-los em números antes de prosseguir com os próximos trabalhos que é a inserção de fórmulas.

  • @TheWAGNER3994
    @TheWAGNER3994 3 ปีที่แล้ว

    boa tarde...
    tenho uma dificuldade.preciso criar uma lista sem repeticoes e todas as possibilidades a partir do conteudo de um grupo fixo dentro de 10 linhas e 15 colunas . voce pode me ajudar ? nao tenho conhecimento em vba...

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว +1

      Olá WO.SANTANNA SANT"ANNA .
      Bom para começar, preciso dizer que apreciei muito a foto do seu perfil, acompanho Fórmula 1 de perto.
      Para criar lista sem repetições, pode tanto utilizar o recurso "Remover Duplicatas" do Excel que se encontra na Guia Dados > Grupo Ferramentas de Dados. Ou Também através de uma das novas funções de matriz Dinâmica do Excel, a Função ÚNICO.
      Por favor, veja se da certo assim.
      Se não funcionar, por favor, envia o arquivo no meu email que tento entender melhor.
      marcusrodello@excelonlinebrasil.com
      Abs.
      👍

  • @isaque.d3528
    @isaque.d3528 3 ปีที่แล้ว

    Bom dia! Marcos pode me ajuda com um problema ? to criando uma planilha to quase acabando ela.
    queria colocar o nome janeiro no formulário e o excel leva o dados do formulário para planilha com nome janeiro.assim me ajudaria a manda produtos para planilhas diferentes

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว +1

      Olá Isaque, tudo bom?
      Por favor, para eu entender melhor, como funcionaria esse mecânica?
      Por exemplo, o nome "Janeiro" seria inserido onde? Em uma combobox? Em uma TextoBox? Direto na Planilha?
      E uma vez inserido o mes em questão, para exibir os registros do mes de Janeiro na Planilha de nome "Janeiro", você faria isso via Filtro Avançado? Copiar /Colar? Query?
      Um abraço.👍

    • @isaque.d3528
      @isaque.d3528 3 ปีที่แล้ว

      @@ExcelOnlineBrasil Olá tudo bem sim,E com o senho ?
      E que eu trabalho com 8 tipos de material diferentes,queria fazer um formulário meio que diferente.
      queria pode coloca o nome do material no registro do formulário junto com dados, como são 8 tipos eu separei em 8 abas na planilha com o nome diferente.
      minha intenção e coloca o nome do material e os dados no registro e levar para a tabela com o nome do material. assim sempre que eu coloca outro nome diferente no registro, os dados serem levado para aba com o nome do material que esta no registro.

  • @zzz-ks9lt
    @zzz-ks9lt 2 ปีที่แล้ว

    é possivel fazer em um userform??? nao estou consegindo

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  2 ปีที่แล้ว

      Sim, é possível.
      Porém precisará trabalhar com os objetos que criou no userform, ao invés que utilizar o "Cells" que utilizei na aula, pois nesse caso meu universo era uma planilha e não um userform.
      Um abs.😉

  • @eliasrodriguescunha9306
    @eliasrodriguescunha9306 3 ปีที่แล้ว

    Teria como pular da linha 19 para a 59 e de 59 para 25 ?

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว +1

      Certamente Elias.
      Você pode fazer isto utilizando a cláusula IF no VBA, ensino ela nesta aula :
      th-cam.com/video/hSu6lbfy_do/w-d-xo.html
      Ficaria algo assim, dentro do LOOP :
      If lin = 19Then
      lin = 59
      ElseIf lin = 60 Then
      lin = 25
      End If
      Um abraço😉

  • @thiaguintfb
    @thiaguintfb 3 ปีที่แล้ว

    😱

  • @dennydidier
    @dennydidier 2 ปีที่แล้ว

    Só não consegui fazer 11 to 1, fiz igualzinho como o descrito

  • @Elaine.antunes
    @Elaine.antunes 2 ปีที่แล้ว

    Como uso pra rodar até achar uma célula vazia?

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  2 ปีที่แล้ว +2

      Olá Elaine. Segue abaixo:
      Com FOR NEXT :
      For lin = 5 To 30
      If Cells(lin, 6) = Empty Then
      Cells(lin, 6).Select
      Exit For
      End If
      Next
      Com FOR EACH :
      For Each cel In Range("f5:f30")
      If cel = Empty Then
      cel.Select
      Exit For
      End If
      Next
      Um abs😉

    • @flavia8782
      @flavia8782 2 ปีที่แล้ว +1

      @@ExcelOnlineBrasil caaaaraaaa!! Deus te abençoe!!! Salvou meu projeto com essa dica!! Só faltava isso e agora deu certinho! Muito obrigada!!

  • @alexroch4
    @alexroch4 3 ปีที่แล้ว

    Olá, obrigado pelo conteúdo. Sabe um jeito de executar somente após esse comando for executado, for possível executar o próximo comando?
    Tenho uma planilha "Data" que acessa o banco de dados e extrai as informações, na outra aba fica a "Pivot" que formata as informações e a aba fica "Gráfico".
    Sempre que executo clico no botão pra fazer o refresh na planilha "Data" a consulta leva um tempo aleatório
    Sintaxe resumida do Botão de Refresh:
    Sheets ("Data").Select
    Range ("Data[[#Headers],[Coluna1]]").Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Queria saber se tem alguma forma de colocar essa macro pra executar de minuto em minuto após ser pressionada e toda vez que a consulta for executada e o resultado for retornado ele ir pra planilha "Gráfico"
    A aba "Pivot" que possuo, já atualiza automáticamente qd tem algum dado novo na "Data".

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว +1

      Olá grande Alex.
      Em geral no VBA eu não aconselho utilizar o "select" pois costuma causar mais problemas do que soluções, mas pode utiliza-lo que ao final da macro ja ative a planilha gráfico, o "activate" tambem pode ajudar com isso.
      Quanto a execução de minuto a minuto, você precisaria trabalhar com a método ONTIME, mas isso pode interferir com a execução de outras macros e também causar alguma instabilidade em seu arquivo, é preciso utiliza-lo com cautela ok.
      Um abraço!😉

  • @niltonreboucas1872
    @niltonreboucas1872 3 ปีที่แล้ว

    Não tenho computador mas vejo as pessoas mexendo no trabalho e sou curioso.fico vendo vídeo mas não sei aplicar no trabalho

    • @ExcelOnlineBrasil
      @ExcelOnlineBrasil  3 ปีที่แล้ว

      Nilton, creio que poderia começar com gravação de Macros, ela consegue automatizar qualquer atividade de rotina que você precise desempenhar, poderia fazer alguns testes no trabalho mesmo. Sempre com o devido backup de arquivos.😉
      Aula - Como Gravar Macros : th-cam.com/video/eDeMq4oYZj0/w-d-xo.html
      Um abraço