Me parece que assim ela só vai piscar cinco vezes, já que você necessita de um loop para colocá-la em verde e outra vez para colocá-la em branco.
Talvez você já queira adiantar e colocar o for de 1 to 20. Também, após o for, troque a linha " Range("X4").Interior.ColorIndex = xlNone" por "Range("X4").Interior.Color = RGB(0, 128, 0)", assim você tem certeza de que vai terminar e ficar verde.
Agora, para alterar o tempo entre a execução das tarefas (se não não vai ser possível visualizar a troca de cores, o piscar), utilize a application Wait.
Segue minha sugestão:
Sub change()
Dim x, newHour, newMinute, newSecond As Long
Dim waitTime As Date
If Range("A4").Value = "Meta Atingida !" Then
For x = 1 To 20 'total de piscadas
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime 'gerencia o tempo até continuar a ação
'Formata Cor do Interior da celula
If Range("A4").Interior.ColorIndex = xlNone Then
Range("A4").Interior.Color = RGB(0, 128, 0)
Else
Range("A4").Interior.ColorIndex = xlNone
End If
Next x
Range("A4").Interior.Color = RGB(0, 128, 0)
End If
MsgBox ("feito")
End Sub
Aquele "+1" em newSecond é o tempo de espera para a mudança de cor. Basta aterá-lo conforme desejar.
Abaixo deixo a fonte da solução, que também contém outras opções.
http://www.tomasvasquez.com.br/blog/mic ... era-no-vba
Postado : 29/11/2016 7:50 am