Notifications
Clear all

Loop com If de pausa

7 Posts
4 Usuários
0 Reactions
1,688 Visualizações
(@hfava)
Posts: 43
Eminent Member
Topic starter
 

Boa tarde pessoal,
Obrigado pelas ajudas até o momento, tem sido bastante uteis.
Também tenho tentado auxiliar as duvida mais simples.
Bom vamos lá, o que eu preciso:
Eu tenho um valor na célula: "abc"
quero criar um loop (só sei usar o while com número), para que quando chegue nesse valor, o loop encerre.
Mais ou menos assim:

Sub limpar()

Dim Plan2 As Worksheet
Set Plan2 = Worksheets("Plan2")

    
For If uLinPlan2_1 = "Ø9/16 ALUMINIO" Then
    Else
    uLinPlan2_1 = Plan2.Columns(1).End(xlDown).Row
    Rows(uLinPlan2_1 + 1).Delete
    End If
    
MsgBox "Acabou"

    
End Sub

Na verdade eu me embanano no "For If" (nem sei se isso existe), eu tentei usar um while, mas não rolou, pois o while é somente para números.

Obrigado de antemão

 
Postado : 25/04/2017 11:35 am
(@mprudencio)
Posts: 2749
Famed Member
 

Disponibilize a planilha com mais informações do que pretende

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 : 25/04/2017 12:02 pm
Syrax
(@syrax)
Posts: 160
Estimable Member
 

Não consegui entender exatamente o que você precisa

Mas vamos lá

não é "FOR IF", existem dois tipos de loop for, que você pode buscar ajuda na net

vou te dar um exemplo

Sub teste()
Dim i As Integer
For i = 1 To 10
MsgBox i
Next i
End Sub

nesse caso, você declara para i que tem o valor inicial de 1 até 10, msgbox o valor de i
ou seja, no primeiro loop, i = 1
quando voce usa "next i" ou "próximo i", i assume o valor de 2, até assumir o valor 10, e quando assume, ele para
pois i = 10

Sub teste()
Dim arr() As String, b As String
b = "a b c d"
arr = Split(b, " ")
For Each a In arr
MsgBox a
Next a
End Sub

nesse caso foi criado uma array chamada arr
atribui a ela os valores "a b c d"
poderia usar também, o mesmo for loop de cima, usando

For i = 0 To UBound(arr) ' as arrays iniciam-se pelo 0 ubound identifica a última posição da array
MsgBox arr(i)
Next i

usando o for each, voce atribiu o valor de "a" a uma matriz de valores

For Each a In arr ' para cada a dentro da matriz de valores arr

a variável "a" então assume um valor de cada vez, até alcançar o último valor da matriz arr

Espero que tenha ajudado, se não entendeu, pode perguntar

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 25/04/2017 12:07 pm
(@hfava)
Posts: 43
Eminent Member
Topic starter
 

Obrigado pela explicação....não entendi :) sorry
Eu coloquei a planilha para vocês entenderem (tive que tirar 95% das células) acho que da para entender, meu objetivo é limpar as linhas vazias com .delete na coluna 1.
Pra isso coloque o end(xldown).row +1 assim acho a linha vazia (tem alguma forma melhor? só sei essa)

Mas eu coloquei a duvida não para vocês resolverem, e sim, para que eu não precise perguntar novamente, quero aprender :)

Muito obrigado pela força!

 
Postado : 25/04/2017 12:14 pm
(@hfava)
Posts: 43
Eminent Member
Topic starter
 

eu sei fazer com While e número, para quando While x < 1045867 (o ultimo numero de celula)
mas queria saber se da pra fazer com texto especifico,

obrigado

 
Postado : 25/04/2017 12:16 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde Hfava,

Olhe o código que coloquei no arquivo em anexo.

Fiz uma planilha de exemplo, quando rodar o código, as linhas que estão vazias dentro do intervalo na coluna A serão deletadas. É isso que você precisa?

OBS: Tem boas aulas sobre estruturas de repetição no Youtube, dê uma procurada lá.

att,

 
Postado : 25/04/2017 12:40 pm
(@hfava)
Posts: 43
Eminent Member
Topic starter
 

Perfeito, vc usou DO while e colocou o If = Empty (essa ultima eu n conhecia)

Perfeito, muito obrigado!

Abrcs

 
Postado : 25/04/2017 12:48 pm