Notifications
Clear all

Código para ignorar condição e continuar macro

8 Posts
3 Usuários
0 Reactions
1,100 Visualizações
(@ebertin)
Posts: 3
New Member
Topic starter
 

Srs,

Estou adaptando uma macro para envio automatico de emails, mas nessa planilha existem dois segmentos diferentes misturados, sendo que será criado um botão para envio para segmento, por exemplo:

Segmento
AAA
BBB
BBB
AAA
AAA
BBB

Existe uma macro "Enviar para AAA" e uma macro "Enviar para BBB".
Para tentar distinguir coloquei a condição

Do While wenv.Cells(Row, 5) <> "" And wenv.Cells(Row, 1) <> "BBB"

O problema é que caso ele encontre alguma célula no caminho que não seja BBB a macro irá parar.

Pensei em colocar algum If, para que caso ele encontre AAA ele pule para a próxima, e assim por diante.

É possível?

Agradeço desde já,

 
Postado : 11/07/2014 8:22 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Poste seu arquivo modelo ou código para que o pessoal possa lhe ajuda.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/07/2014 8:30 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

ebertin,

Bom Dia!

Tente assim:

Do While wenv.Cells(Row, 5) <> "" 
     If wenv.Cells(Row, 1) = "BBB"
         'Executa Macro que envia para BBB
     ElseIf wenv.Cells(Row, 1) = "AAA"
         'Executa Macro que envia para AAA    
     End If
Loop

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 : 11/07/2014 8:38 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Só um ajuste na rotina do colega Wagner e uma Obs:

Ebertin como não postou a rotina inteira que está utilizando, acredito que a Variável Row deve estar sendo armazenada antes da execução das instruções indicadas, se sim, devemos ao final incrementa-la, senão entraremos em Loop infinito, uma outra dica seria se realmente Row é uma Variável, evite dar nomes a Variáveis utilizando a mesma referencia da propriedade, procure utilizar sRow, sLinha ...:

Do While wenv.Cells(Row, 5) <> ""
     
     If wenv.Cells(Row, 1) = "BBB" Then
         'Executa Macro que envia para BBB
     
     ElseIf wenv.Cells(Row, 1) = "AAA" Then
         'Executa Macro que envia para AAA
     End If
     
     Row = Row + 1
Loop

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/07/2014 8:50 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Beleza Mauro!

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 : 11/07/2014 9:57 am
(@ebertin)
Posts: 3
New Member
Topic starter
 

Primeiramente gostaria de agradecer pelas respostas.

Coloquei o código que vocês sugeriram e de fato ele executa as macros, o único problema é que eu preciso dividir isso em duas macros, pois preciso de dois botões. Tenho essa necessidade porque uma pessoa enviará para os destinatários do grupo AAA e outra pessoa enviará para os do BBB.
Estou tentando encontrar algo que ignore as váriaveis AAA da macro "BBB", e vice versa, para que a macro não seja interrompida quando encontra-las

@alexandrevba
Não consigo upar planilhas por aqui

 
Postado : 11/07/2014 10:32 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ebertin, se sua duvida for somente esta, não precisa anexar o arquivo, mas se precisar veja no link abaixo como faze-lo:

Como Anexar Aquivos Compactados ?
viewtopic.php?t=3841

Quanto a sua duvida eu havia entendido da mesma forma que o Wagner uma rotina com condição, mas seprecisa de duas rotinas separadas é só fazer o ajuste:

Sub Envia_AAA()

    Do While Plan1.Cells(Row, 5) <> ""
         
         If Plan1.Cells(Row, 1) = "AAA" Then
             'Executa Macro que envia para AAA"
         End If
         
         Row = Row + 1
    Loop
    
End Sub

Sub Envia_BBB()

    Do While Plan1.Cells(Row, 5) <> ""
         
         If Plan1.Cells(Row, 1) = "BBB" Then
             'Executa Macro que envia para BBB"
         End If
         
         Row = Row + 1
    Loop
    
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/07/2014 10:42 am
(@ebertin)
Posts: 3
New Member
Topic starter
 

Deu certo, Mauro.
Obrigado.

Ficou assim

    Set wMsg = Sheets("Msg")
    Set wenv = Sheets("Enviar")
    Set wCola = Sheets("Colar")
    
    wenv.Range("E2:H200").Interior.ColorIndex = xlNone
            
    Row = 2
    
    Do While wenv.Cells(Row, 5) <> ""

    If wenv.Cells(Row, 1) = "BBB" Then
    xxx = wenv.Cells(Row, 2)
    yyy = wenv.Cells(Row, 3)
    zzz = wenv.Cells(Row, 4)

Obrigado a todos!

 
Postado : 11/07/2014 11:48 am