Notifications
Clear all

Maior que 30 para, menor que 30 continua.

14 Posts
4 Usuários
0 Reactions
2,579 Visualizações
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Boa tarde colegas,

Preciso de ajuda para resolver esta questão.

Necessito de uma macro que verifique o numero da coluna B e caso for menor que 30 continue executando minha rotina e se for maior que 30 pular e ir para o próximo item.
Tentei criar alguma coisa para suprir minha necessidade mas não consegui.

Antecipadamente agradeço a ajuda.

 
Postado : 03/08/2016 10:13 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Fabiosp,

Boa tarde!

Não consigo baixar arquivos .rar. Só .zip.

Veja se é assim.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 03/08/2016 10:57 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Wagner Morel boa noite.

Agradeço a disponibilidade em ajudar.
Analisei o seu arquivo mas não era bem isso que necessito.
Estou anexando minha planilha em ZIP por favor poderia verificar.

Abraços.

Fabio sp

 
Postado : 03/08/2016 4:40 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Ve se isso ajuda


Sub Verifica()

linha = 2

Do While Cells(linha, 1).Value <> ""

If Cells(linha, 2).Value <= 30 Then

'aqui vc chama sua rotina

End If

linha = linha + 1

Loop

End Sub

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 03/08/2016 5:00 pm
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
 

Caro amigo, Testa aí e vê se te atende; abaixo código da macro:

Sub Rotina()
Dim valor, contagem As Integer
contagem = 2
Do While Range("a" & contagem).Value <> ""
valor = Range("b" & contagem).Value
If valor < 30 Then
contagem = contagem + 1

'cole aqui sua rotina

Else
contagem = contagem + 1
End If
Loop
End Sub

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 03/08/2016 8:28 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Bom dia colegas,

Agradeço ajuda de todos.
Analisei todas sugestões e funcionou, porém por falha minha esqueci de explicar que a minha rotina usa os nomes da coluna A para efetuar buscas em outras bases de dados.
O campo de busca desta base de dados só suporta até 30 caracteres passando o limite ocorre um erro.
Percebi que as sugestões citadas pelos colegas funcionam perfeitamente como eu expliquei, porém o problema é que quando rodo a rotina sugerida pelos colegas, caso houver um número menor que 30 ele ativa minha rotina só que ela faz a busca utilizando todos nomes que estão na coluna A mesmo que tenha menos ou mais de 30 caracteres.
Acho que para resolver esse meu problema seria mais fácil se houver uma forma de criar uma rotina que analisa todos nomes da coluna A e só ativar a minha macro se não houver nenhum nome com mais de 30 caracteres.

Peço novamente desculpa a todos por não explicar detalhamente que preciso pois sei que todos ajudam voluntariamente e ninguém tem bola de cristal para adivinhar que necessitamos.

Abraço a todos,

Fabio sp

 
Postado : 04/08/2016 5:56 am
(@mprudencio)
Posts: 2749
Famed Member
 

Agora eu nao entendi, não analisei a rotina do colega, mas a minha rotina so executa seu codigo se a condição for verdadeira.

enquanto existir dados na coluna a
do while valor da celula diferente de vazio

if valor da celula <=30 for verdadeira

executa sua rotina

end if

pula uma linha

loop

Nao entendi o que esta errado, disponibilize seu codigo. e a planilha completa explicando o que deve ser feito

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 04/08/2016 7:40 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

MPrudencio boa tarde,

Obrigado pela atenção.
Vou explicar, o problema e que quando a sua rotina identifica um número menor que 30 ela ativa minha rotina.
Acontece que a minha rotina vai copiando todos nomes da coluna A e procurando no programa de base de dados ignorando a tarefa da sua rotina.
Acho que para resolver deveria encontrar uma maneira de adaptar minha rotina a sua.
Assim ela ignorava os nomes com mais de 30 caracteres da coluna A e só procuraria os nomes com menos de 30 caracteres.
Desculpa mais uma vez pela confusão na explanação.

Estou anexando a planilha com minha rotina pra você analisar.

Abraços.

Fabio sp

 
Postado : 04/08/2016 9:47 am
(@mprudencio)
Posts: 2749
Famed Member
 

Com base no que vc disse o resultado esperado é a coluna D ou seja onde tem verdadeiro deve executar o seu codigo.

É isso?

Se vc verificar so tem verdadeiro onde os valores da coluna B são iguais ou menor que 30

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 04/08/2016 12:00 pm
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
 

Bom dia colegas,

Agradeço ajuda de todos.
Analisei todas sugestões e funcionou, porém por falha minha esqueci de explicar que a minha rotina usa os nomes da coluna A para efetuar buscas em outras bases de dados.
O campo de busca desta base de dados só suporta até 30 caracteres passando o limite ocorre um erro.
Percebi que as sugestões citadas pelos colegas funcionam perfeitamente como eu expliquei, porém o problema é que quando rodo a rotina sugerida pelos colegas, caso houver um número menor que 30 ele ativa minha rotina só que ela faz a busca utilizando todos nomes que estão na coluna A mesmo que tenha menos ou mais de 30 caracteres.
Acho que para resolver esse meu problema seria mais fácil se houver uma forma de criar uma rotina que analisa todos nomes da coluna A e só ativar a minha macro se não houver nenhum nome com mais de 30 caracteres.

Peço novamente desculpa a todos por não explicar detalhamente que preciso pois sei que todos ajudam voluntariamente e ninguém tem bola de cristal para adivinhar que necessitamos.

Abraço a todos,

Fabio sp

Caro Fábio, entendi o que quiz dizer, mas me tira uma dúvida: a sua rotina copia todos os campos que possuem menos de 30 caracteres e faz uma busca em outro banco de dados, mas esta busca é feita linha por linha? ou você copia todos os dados que tem menos de 30 caracteres e faz a busca de uma só vez?

Abaixo solução para não executar a sua rotina caso haja algum valor maior que 30 caracteres. Caso a sua rotina faça a pesquisa valor por valor, é só você postar a rotina que adaptamos no loop do código que verifica se existe valores acima de 30.

Sub Rotina()
Dim valor, contagem, ContagemValoresAcima As Integer
contagem = 2
ContagemValoresAcima = 0

Do While Range("a" & contagem).Value <> ""
valor = Range("b" & contagem).Value

If valor < 30 Then
contagem = contagem + 1
Else
ContagemValoresAcima = ContagemValoresAcima + 1
contagem = contagem + 1
End If
Loop

If ContagemValoresAcima >= 1 Then

MsgBox ("Existe valores com mais de 30 caracteres, não será possível fazer sua busca")
Exit Sub
Else

'cole aqui sua rotina

End If
End Sub

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 04/08/2016 1:44 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Lucélio boa noite,

Muito obrigado pela força.
Testei e está fazendo exatamente como eu estava planejando.
Sem quer abusar de sua boa vontade, mais no campo do msgbox teria como listar os nomes com mais de 30 caracteres para facilitar na hora da correção?

Mais uma vez agradeço a sua atenção.

Abraços

Fabio sp

 
Postado : 04/08/2016 6:42 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

MPrudencio boa noite,

Agradeço a sua atenção.
A coluna D e copiado o nome da base de dados para saber que o nome já foi inserido nela.
Essa sua dica de incluir se a condição é verdadeira ou falsa achei legal.
A sugestão do colega Lucélio resolveu meu problema.
Agradeço mais uma vez a sua costumeira atenção.

Abraços

Fabio sp

Com base no que vc disse o resultado esperado é a coluna D ou seja onde tem verdadeiro deve executar o seu codigo.

É isso?

Se vc verificar so tem verdadeiro onde os valores da coluna B são iguais ou menor que 30

 
Postado : 04/08/2016 6:48 pm
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
 

Lucélio boa noite,

Muito obrigado pela força.
Testei e está fazendo exatamente como eu estava planejando.
Sem quer abusar de sua boa vontade, mais no campo do msgbox teria como listar os nomes com mais de 30 caracteres para facilitar na hora da correção?

Mais uma vez agradeço a sua atenção.

Abraços

Fabio sp

Caro Fabio, anexo planilha com o código solicitado. Quando houver células na coluna "A" com mais de 30 caracteres o Exel emitirá a mensagem e colorirá de vermelho as células. Faça um teste aí e vê se te atende.

Att.: Lucélio

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 04/08/2016 7:36 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Boa noite Lucélio,

Desculpe a demora e obrigado por sua atenção.
Testei a sua sugestão e está de acordo, única coisa é que na hora que aparece a mensagem não faz a listagem dos nomes com mais de 30 caracteres apenas destaca de vermelho na coluna A.
Mais acho que deste jeito é suficiente pois resolveu o problema maior.
Mais uma vez agradeço a força.

Abraços

Fabio sp

Lucélio boa noite,

Muito obrigado pela força.
Testei e está fazendo exatamente como eu estava planejando.
Sem quer abusar de sua boa vontade, mais no campo do msgbox teria como listar os nomes com mais de 30 caracteres para facilitar na hora da correção?

Mais uma vez agradeço a sua atenção.

Abraços

Fabio sp

Caro Fabio, anexo planilha com o código solicitado. Quando houver células na coluna "A" com mais de 30 caracteres o Exel emitirá a mensagem e colorirá de vermelho as células. Faça um teste aí e vê se te atende.

Att.: Lucélio

 
Postado : 06/08/2016 7:53 pm