Página 1 de 1

Condição para macro funcionar

Enviado: 16 Mar 2021 às 19:39
por Sullivan2021
Boa noite pessoal, estou com uma dúvida. Preciso executar uma macro, porém, ela só pode ser executada se o valor de uma determinada célula for correspondente à “FALSO”. Então, se a célula W34 apresentar escrito dentro dela “FALSO” a seguinte macro (que já está funcionando perfeitamente e tem como atividade copiar as células de AF2 até AH2 numa lista) rodará:
Código: Selecionar todos
Range("AF2:AH2").Select
    Selection.Copy
    Range("AW1").Select
    
    If Range("AW2").Value <> "" Then
    Selection.End(xlDown).Select
    End If
    
    ActiveCell.Offset(1, 0).Select
    
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.ScrollColumn = 43
  
    Range("AF1").Select
    Application.CutCopyMode = False
End Sub
Se na célula W34 apresentar qualquer outro valor, ou até mesmo não apresentar nenhum conteúdo, a macro acima não será executada e não acontecerá nada. Vocês sabem o que preciso colocar nesse código acima para que isso tudo possível?

Agradeço a atenção!!

Re: Condição para macro funcionar

Enviado: 16 Mar 2021 às 20:07
por osvaldomp
#
Acrescente as linhas em vermelho, conforme abaixo.

If [W34] = False Then
Range("AF2:AH2").Select
...
...
Application.CutCopyMode = False
End If

Re: Condição para macro funcionar

Enviado: 17 Mar 2021 às 13:52
por Sullivan2021
Muito obrigado Osvaldomp, você me ajudou dnv numa dúvida!! Estou aprendendo a mexer no VBA e as suas respostas estão me ensinando cada vez mais, muito obrigado!!

Re: Condição para macro funcionar

Enviado: 17 Mar 2021 às 14:40
por osvaldomp
Bacana. Que bom que resolveu.
Já que você está aprendendo, segue uma dica: não utilize Select nos seus códigos, pois esse comando raramente é necessário, ele tende a aumentar o tempo de execução, além de limitar a versatilidade e a criatividade na elaboração do código, aumentar o tamanho do código e ainda provocar lampejos na tela (flicking).

Por exemplo, o trecho de código que você publicou acima pode ser escrito assim (uma única linha de código copia e cola, e sem Select):
Código: Selecionar todos
 Range("AF2:AH2").Copy Cells(Rows.Count, "AW").End(xlUp)(2)