EXCEL VBA DO LOOP UNTIL - LAÇO de REPETIÇÃO + ANÁLISE com IF
HTML-код
- Опубликовано: 5 сен 2024
- Passo a passo para utilizar Do Loop Until no vba para percorrer células da planilha Excel e fazer análise dos dados. Neste exemplo trabalhamos com laço de repetição e análise através de condições if dentro do Loop Until do vba. Além de abordar o código vba Exit do utilizado para sair do loop sem que tenha chegado ao final da área de análise de dados na Planilha Excel. Com o uso da estrutura Do Until no vba, é possível definir um loop que repete um conjunto de ações até que uma condição seja atendida.
✅Site SGP: Venda de Coleção de Planilhas Excel VBA Prontas:
www.planilhasc...
==========================================
obrigado por ajudar compartilhando seu conhecimento.
De nada.
Parabéns Professor, ótimo video. Eu estou com uma situação parecida, mas eu preciso colar varias vezes o mesmo resultado em loop, usando como referencia a coluna 2
Bom dia, obrigado, acredito que a estrutura de análise vai ser semelhante.
@@CanalSGP
With Planilha9
Do
Linha = Linha + 1
Loop Until .Cells(Linha, 11).Value = ""
.Cells(Linha, 11).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Aqui eu não estou conseguindo fazer com que ela use a coluna 2 como referencia e cole o mesmo resultado em loop até o final da planilha na coluna 11.
Do jeito que está, ela está somente identificando a ultima linha vazia na coluna 11 e colando uma vez só.
Boa tarde, se deseja a coluna 2 altere onde tem 11 para 2
Excelente...
Obrigado
Como faço para o vba buscar uma coluna linha em especifico na planilha através de um clique em um botão e depois ficar nessa mesma coluna acessando as células das linhas inferiores também somente através de um clique no botão, mas sem retornar para a primeira célula do primeiro clique, consegue me ajudar nessa? tem como passei o dia tentando, mas sem sucesso, parabéns pelo conteúdo você é fera.
Bom dia, infelizmente não fiz código com funções semelhantes até o momento.
Boa noite!
Muito bom.
Existe algum lugar com o código fonte?
Boa tarde, pode solicitar a planilha de exemplo no e-mail do site do canal, link na descrição do vídeo.
Muito bom! Estou com uma necessidade de numerar itens, se eu tiver 3 bola azul, numerada de 1 a 3 e comprar 10 bolas, 5 azuis e 5 brancas, q o laço enumere bola azul 4,5,6,7 e 8.
Tenho muita dificuldade com vba, pois não entendo mas acho q consigo remanejar essa forma pra resolver esse problema.
Se não der certo, preencho no excel e copio e colo.
Bom dia, obrigado, não tentei fazer algo assim ainda.
Professor, no caso se eu tivesse que executar essa macro em diversas guias, existe alguma forma de nao ter que repetir diversas vezes o mesmo código? No caso da parte onde referencia a guia: With Planilha1. Se eu tivesse 20 planilhas teria que fazer With Planilha1, With Planilha2, With Planilha3... sendo que é o mesmo código dentro. Tem como fazer com varíavel esse nome da Planilha pra nao ter que ficar copiando e colando?
Bom dia, teste colocar With Activesheet
Loop
Obrigado
Olá, tenho uma quantidade de células com tamanho da fonte maior e quero salvar em outra linha com fonte menor no vba
Boa tarde, teste gravar uma macro para capturar o código fazendo o processo de forma manual. Depois pode acrescentar o código a sua macro que salva o registro.
Fantástico!
Estou necessitando de algo parecido, porém, preciso transferir da planilha1 para planilha2, excluindo esses dados da planilha1, com base no critério.
EX: na coluna "D" tenho ENTRADA e SAÍDA, preciso enviar para planilha2 somente as Saídas.
Procurei em sua PlayList algo parecido, porém, não encontrei, Caso tenha esse material, Gentileza, poderia enviar o Link?
Desde já Grato....
Boa tarde, já recebi esta dúvida algumas vezes, mas não consegui desenvolver algo viável ainda.
@@CanalSGP Consegui esses 2 dois códigos abaixo, 1º com desenvolvido com "IA", não envia tudo de uma só vez, envia com uma certa quantidade, mas, funciona certinho.
Já o 2º é seria perfeito, porém, está tendo um pequeno probleminha, nele consta o link do vídeo.
1º CÓDIGO --------------------------------------------------------------
Sub TransferirTodosDados()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Dim cel As Range
Dim crit As String
' Defina as planilhas
Set ws1 = ThisWorkbook.Sheets("REGISTRO")
Set ws2 = ThisWorkbook.Sheets("SAIDAS")
' Defina o critério (por exemplo, "Valor X")
crit = "SAÍDA"
' Defina o intervalo de dados na coluna D da Planilha1
Set rng1 = ws1.Range("G1:G" & ws1.Cells(ws1.Rows.Count, "G").End(xlUp).Row)
' Percorra cada célula na coluna D da Planilha1
For Each cel In rng1
If cel.Value = crit Then
' Copie a linha inteira para a Planilha2
cel.EntireRow.Copy ws2.Cells(ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row + 1, 1)
' Exclua a linha da Planilha1
cel.EntireRow.Delete
End If
Next cel
End Sub
-----------------------------------------------------------------------------
2º CÓDIGO
Sub Transferir_Saidas()
Dim LinhaPlan1, LinhaPlan2 As Long
Dim ColunaPlan2 As Integer
inicio:
LinhaPlan1 = 2
While Planilha2.Range("A" & LinhaPlan1).Value ""
If Planilha2.Range("G" & LinhaPlan1).Value = "SAÍDA" Then
LinhaPlan2 = 2
While Planilha7.Range("A" & LinhaPlan2).Value ""
LinhaPlan2 = LinhaPlan2 + 1
Wend
For ColunaPlan2 = 1 To 51
Planilha7.Cells(LinhaPlan1, ColunaPlan2).Value = Planilha2.Cells(LinhaPlan1, ColunaPlan2).Value
Next ColunaPlan2
Planilha2.Cells(LinhaPlan1, ColunaPlan2).EntireRow.Delete
GoTo inicio
End If
Wend
LinhaPlan1 = LinhaPlan1 + 1
'ruclips.net/video/RP3KSSqOTDQ/видео.html
End Sub
Que bom que conseguiu.
@@CanalSGP obrigado
Professor, o que significa o " . " (ponto) antes da expressão "Cells(Linha, 2).value" ?
Bom dia, o ponto é porque referenciei a guia da planilha com With, portanto não preciso repetir o nome da guia, mas dentro do with precisa colocar ponto para informar que se trata da guia do with.
Obrigado, Professor!
De nada.
Olá SGP, primeiramente obrigado pela aula. Como faço para determinar até qual linha eu quero a validação, pois em meu relatório tenho linhas em brancas e linhas preenchidas, dessa forma irei utilizar a sua dica do Exit Do, mas não sei como determinar a linha.
PS: Estou utilizando Msgbox quando houver data futura maior que a atual. Exemplo:
Dim Linha As Double
Linha = 1
With Plan1
Do
Linha = Linha + 1
If .Cells(Linha, 38).Value > Date Then
Erro = MsgBox("DATA DE ENTREGA MAIOR QUE A DATA ATUAL", vbOKOnly, "Erro")
End If
Bom dia, pode colocar um número de linhas fixo para saída do loop, por exemplo:
Do until Linha = 100
Vai fazer o laço até a linha 100 e parar.
@@CanalSGP obrigado deu certo, só fiquei na dúvida se eu quiser usar um If para data específica, eu colocaria assim ?
Exemplo
If .Cells (Linha,38).Value < “01/01/1900” then
Erro = MsgBox …
Boa tarde, provavelmente vai precisar transformar a data comparativa em número.
Boa noite...
Tenho uma necessidade. Preciso criar uma estrutura para extrair uma lista semrepeticao e todas as possibilidades combinatória .a partir do conteúdo dentro de um espaço de ( 10 linhas e 15 colunas).
na lista os numeros precisam estar em ordem crescente (da primeira até a décima quinta coluna).
Vc pode me ajudar?
Obrigado.
Boa noite, não fiz algo semelhante ainda, não sei dizer se é possível.
boa noite
estou usando esse parâmetro :
Base1.Range("v1048576").End(xlUp).Offset(1, 0).value2 = Result3.Range("c16:t16").value2
estou copiando de uma planilha para outra do intervalo c16:t16 para sheet base1 , só que só aparece o resultado c16 e não o intervalo ( na base1 estou copiando sempre na próxima célula em branco ), o que estou fazendo de errado ,?
obrigado
Boa noite, acredito que vai precisar utilizar o comando copy, segue like de vídeo sobre esse tema. ruclips.net/video/ynrEzQMmwbI/видео.html
@@CanalSGP obrigado
De nada
Preciso copiar e colar dados de 5 em 5 minutos via vba para gerar um banco de dados, tem como?
Bom dia, não tentei algo assim ainda, mas vou estudar se tem como.
Boa noite,
O meu está dando Loop sem Do, porém foi inserido o mesmo. O que pode ser?
Bom dia, pode ser um Loop de fato sem do ou um if que está sem o end if
Preciso carregar dados na planilha de um link de API fazer a análises destes dados e depois repetir o processo. Tentei fazer com loop mas o loop não deixa a consulta ser carregada. Já usei aplicatiion.wait para fazer essa pausa e carregar a consulta mas também não dá certo.
Bom dia, não fiz procedimento assim ainda.
@@CanalSGP estou quebrando cabeça, consigo fazer toda a lógica do loop, o problema é que o loop é tão rápido que trava o carregamento da consulta, e sem este carregamento não tem como fazer a análise dos dados. Se puder me dá uma luz ficarei eternamente grato com vc.
Boa noite, talvez o que possa fazer é transferir os dados para uma array no VBA e posteriormente fazer a consulta no array.
ola, como faço isso em um userform??
Bom dia, depende e quais objetos vai utilizar na análise.
quero substituir no vba a expressão "Linha = 4" por "Linha = primeira celula vazia"
Bom dia, segue link de vídeo sobre localizar próxima linha vazia. ruclips.net/video/7xYugUHnf78/видео.html
Ops queria ver vc faz codigo pra mim numeros coicidentes pra lotofacil seria loop until
Boa tarde, com encomendas não trabalho mais, estou trabalhando para uma empresa agora.
Olá, Boa noite, muito útil essa aula, infelizmente não sei da linguagem VBA, gostaria de te pedir uma dica ou um norte
Tenho que fazer um relatório da minha equipe e mostrar as diferenças apontadas de Dia x Horas Trabalhadas, exemplo
Tabela com Dados já carregados:
DATA USER HORAS NO DIA
15/09/2022 | ppcorrieri | 8
16/09/2022 | ppcorrieri | 6
Tenho que trazer a Data e o Resultado para outra tabela a onde as Horas sejam menores do que 8 e dar a resposta como: OK (se Horas = 8) ou: INCONSISTENTE (se Horas < 8)
resultado esperado:
DATA RESULTADO
15/09/2022 | OK
16/09/2022 | INCONSISTENTE
A lógica em si eu sei, porém não sei aplicar isso no Excel, tem alguma dica?
Bom dia, não fiz algo semelhante ainda, com fórmulas talvez com a função se, mas como se trata de hora provavelmente vai precisar colocar mais uma coluna e transformara a data em hora.