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
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?
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
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😉👍
@@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.
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
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 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.
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😉
@@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.
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?
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.😉
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?
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😉
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...
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. 👍
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
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.👍
@@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.
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😉
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😉
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
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
@@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.
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".
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!😉
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
MARCO gostei muito já havia assistido com Júlio Battisti entre outros e não havia ficado tão claro pra mim. Obrigado
Que bom que ficou claro esta aula para você Marcio, vamos sempre tentando melhorar a didática.
Obrigado, um abs.👍
Sua didática é excelente!
Muito obrigado!
Show de aula, uma didática sensacional. Parabéns 👏
EXCELENTE didática. NOTA 10 ! 😀👍
Quem sabe agora vai conseguir apreender. Aula 10
Show, gostei da sua didática, me inscrevi.
Muito obrigado.
Feliz em ajudar Leandro. Um abraço.😉
muito top... bastante simples e funcional. Abre um leque para muitas outras coisas
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
Muito bom! Ficou muito claro.
Graaaaande professor! Ótima aula. Abração!
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 👍😉
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?
Vai rolar Black friday no curso,tô interessado.
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
poderia explicar qual a diferenca do loop for next ou for each
eu nunca sei quando devo usar ou qual devo usar.
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😉👍
@@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.
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
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.
Olá @jeffersonrhoads.
Publicamos uma aula sobre isso nessa semana, segue o link : th-cam.com/users/liveYQ5SC1bmQQo
Um abraço😉
@@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.
Minha dúvida é, como carregar uma link aguardar o carregamento e assim que a página estiver carregada continua o loop.
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😉
@@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.
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?
Consegue sim Geiciara. No caso da tabela estar filtrada, o loop vai passar pelas linhas que estiverem ocultas tambem.
Abs😉
@@ExcelOnlineBrasil Muito obrigada!
é possivel fazer em um userform??? nao estou consegindo
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.😉
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?
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😉
@@ExcelOnlineBrasil Estou usando 24 Checkbox
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...
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.
👍
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
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.👍
@@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.
Teria como pular da linha 19 para a 59 e de 59 para 25 ?
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😉
Como uso pra rodar até achar uma célula vazia?
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😉
@@ExcelOnlineBrasil caaaaraaaa!! Deus te abençoe!!! Salvou meu projeto com essa dica!! Só faltava isso e agora deu certinho! Muito obrigada!!
😱
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
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
@@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.
Só não consegui fazer 11 to 1, fiz igualzinho como o descrito
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".
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!😉
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
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