Notifications
Clear all

Executar Macro = SE for verdadeiro

17 Posts
4 Usuários
0 Reactions
3,837 Visualizações
(@nando)
Posts: 53
Trusted Member
Topic starter
 

Boa noite colegas,

Pesquisei bastante no forum mas sem sucesso.

Estou precisando executar uma macro se valor for verdadeiro EX:

=SE(A1>1;"Verdadeiro";"Falso")

Se for verdadeiro chamar MACRO1

Aguardo Ajuda de Vocês

 
Postado : 24/08/2014 7:04 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

o que essa macro faz? pergunto isso, pq dependendo do que a macro faz, podemos usar uma Function...
Functions criadas em código podem ser chamadas por células... MAS, são limitadas qto ao que podem fazer nas células...
entao, duas perguntas:

essa fórmula q vc escreveu, ela está em qual célula ? (não pode estar em A1, pois daria referência circular...)
o códido dessa macro, em linhas gerais, o que ele faz?

respondendo essas duas perguntas, posso direcionar o melhor caminho pra vc...

FF

 
Postado : 24/08/2014 7:17 pm
(@nando)
Posts: 53
Trusted Member
Topic starter
 

Tenho um longo relatório a base de PROCV.

Quando vou fazer emissão preciso ativa cada MACRO uma por vez e imprimir o relatório em PDF e depois juntar todos relatórios e renomear a pagina.

Com sua ajuda o comando for verdadeiro significa que a demana de impressão naquele intervalo desta forma ativa todas macros de uma vez.
obrigado

 
Postado : 24/08/2014 7:39 pm
(@edcronos)
Posts: 1006
Noble Member
 

então uma unica macro que varra essas celulas para executar as macros necessárias não seria o suficiente?

 
Postado : 24/08/2014 7:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

então podia ser um botão ?

Neste caso, código do botão:

Sub CommandButton1()
    Call Macro1
    Call Macro2
    Call Macro3
    'e assim por diante
End Sub
 
Postado : 24/08/2014 7:52 pm
(@nando)
Posts: 53
Trusted Member
Topic starter
 

Segue o modelo para baixar.

 
Postado : 24/08/2014 8:08 pm
(@nando)
Posts: 53
Trusted Member
Topic starter
 

Precisava incluir a expressão

Sub CommandButton1()
SE A1 = VERDADEIRO Call Macro1
SE A10 = VERDADEIRO Call Macro2
SE A20 = VERDADEIRO Call Macro3
'e assim por diante
End Sub

 
Postado : 24/08/2014 8:22 pm
(@edcronos)
Posts: 1006
Noble Member
 

são só esses 3 relatorios ou tem mais?
se tiver mais...
os tamanhos mudam?

se forem muitos dá para fazer uma varredura na coluna F e ve a linha que tem verdadeiro, e pela linha pegar o relatório correspondente
mas aí tem que ter uma padrão nas caixas de relatórios e a posição tanto das formulas quanto das caixas

 
Postado : 24/08/2014 8:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

'e assim por diante

quantas e quais são essas células? E os nomes das macros ?

 
Postado : 24/08/2014 8:41 pm
(@edcronos)
Posts: 1006
Noble Member
 

poderia ficar mais ou menos assim mas tem que ter um certo ajuste na planilha

Sub test()
    lf = Cells(Rows.Count, "F").End(xlUp).Row
        For L = 1 To lf
            If Cells(L, "f").Value2 = "Verdadeiro" Then
                Range("A" & L, "D" & L + 7).Select    ' as caixas tem que ser todas do mesmo tamanho
            End If
        Next
    End If
End Sub

ou coloque o numero da macro na linha de baixo da formula
tipo a formula tem que chamar a macro1

em baixo da formula coloque o numero 1
mas os nomes das macros tem que ser iguais apenas mudar o numero final

Sub test()

    Lf = Cells(Rows.Count, "F").End(xlUp).Row
    For L = 1 To lf
        If Cells(L, "f").Value2 = "Verdadeiro" Then
            macroL = "macro" & Cells(L + 1, "F").Value2
            Application.Run macroL
        End If
    Next
End Sub
 
Postado : 24/08/2014 9:05 pm
(@nando)
Posts: 53
Trusted Member
Topic starter
 

Fiz um teste aqui, porém ainda estou com problema para selecionar 1 macro 2 ou 3 ao mesmo tempo em função do resultado.
o relatório deverá selecionar apenas os campos que for verdadeiros.
Criei uma macro que seleciona cada relatório, quando o relatório possui dados para impressão o resultado da expressão e verdadeiro desta forma quando eu executar a macro geral do comando abaixo seleciona todos relatórios verdadeiros.

Sub Botão4_Clique()
If Sheets("Plan1").Range("F3") = 1 Then
Call Macro2
Else
MsgBox "Sem Dados para emissão do relatório1"
End If
If Sheets("Plan1").Range("F11") = 2 Then
Call Macro3
Else
MsgBox "Sem Dados para emissão relatório2"
End If

End Sub

 
Postado : 24/08/2014 9:39 pm
(@edcronos)
Posts: 1006
Noble Member
 

Como falei,
coloque o numero da macro correspondente em baixo das formulas
se na formula de F3 chama a macro2
coloque o numero 2 na celula F4
ou seja , uma linha abaixo

Sub test()

    LF = Cells(Rows.Count, "F").End(xlUp).Row
    For L = 1 To LF
        If Cells(L, "F").Value2 = "VERDADEIRO" Then
            MacroL = "Macro" & Cells(L + 1, "F").Value2
            Application.Run MacroL
        End If
    Next
End Sub

essa macro vai varrer toda a coluna "F" e executar a macro correspondente que a formula estiver com valor VERDADEIRO, não importa quantas sejam

 
Postado : 24/08/2014 10:08 pm
(@nando)
Posts: 53
Trusted Member
Topic starter
 

AMigo meu problema maior seguinte caso.

Preciso selecionar 1º ou 3º relatório ou alternados 1 e 2 ou 2 e 3.
Quando mando executar - Range("A10:D15").Select - para selecionar relatório 2 e
Range("A17:D22").Select para selecionar relatório 3, somente 1 e selecionado, parece que um comando remove o outro.
Aguardo sua ajuda.

 
Postado : 25/08/2014 5:16 am
(@edcronos)
Posts: 1006
Noble Member
 

vc era para ter explicado a situação deste o inicio
no seu caso não pode ser varias macros e sim apenas uma que selecione todos juntos

seria mais pratico a macro pegar cada parte e jogar para uma planilha auxiliar onde iria ser feito o resto do processo
mas sem ver o projeto em si fica difícil tomar uma decisão da melhor maneira de se fazer oq vc quer

1 º mande uma MP para um administrador para tirar o resolvido do topico
2º leia todo o tópico para ve oq foi perguntado e vc não respondeu "quantas caixas de relatórios tem?, ficam espalhadas igualmente? ...?"
3º mande uma planilha com mais detalhes do que vc quer fazer e de como é sua planilha original
4º não poupe informações sobre sua planilha, apenas modifique informações sigilosas ou privadas.
5º e não menos importante "agradeça" não apenas as respostas que resolveram seu problema, mas as que de alguma forma te ajudaram em algo
isso motiva ao pessoal a tentar ajudar mais ainda
e se vc puder contribuir com o forum de alguma maneira respondendo algo que vc saiba, vai ajudar outros que como vc ou eu tbm precisam de ajuda

isso vale não apenas para vc mas para todos do forum
Att.

 
Postado : 25/08/2014 10:59 am
(@dimorais)
Posts: 431
Honorable Member
 

No entrelinhas, mandou muito bem, Edcronos. :oops:

 
Postado : 25/08/2014 12:18 pm
Página 1 / 2