Macro para hacer celdas intermitentes

Me gustaría saber si me podéis ayudar, intento explicarme:

Tengo un fichero donde después de ejecutar una macro pinta de amarillo unas determinadas celdas, me gustaría saber si es posible que esa misma macro se vuelvan intermitentes hasta que se rellenen con datos.

1 Respuesta

Respuesta
1

En tu macro realiza esta llamada:

Call StartBlink

En otro módulo pon lo siguiente

Sub StartBlink()
'Por.Dante Amor
    If Range("C1") <> "" And Range("C2") <> "" Then
        Exit Sub
    End If
    '
    With Range("C1, C2").Interior
        If .ColorIndex = 6 Then ' Amarillo
            .ColorIndex = 3     ' Rojo
        Else
            .ColorIndex = 6     ' Amarillo
        End If
        DoEvents
    End With
    RunWhen = Now + TimeSerial(0, 0, 2)
    Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!StartBlink", , True
End Sub

Cambia C1 y C2 por las celdas que te interesa verificar.


Hola,

Gracias por tu rápida respuesta, mi duda es que las celdas que quiero que se vuelvan intermitentes pueden ser varias en un rango dentro de dos columnas y no como se definiría eso en C1 y C2.

Gracias.

¿Quieres qué cuando una celda ya tenga datos ya no parpadee?

Efectivamente, quiero que al abrir el fichero las celdas en amarillo parpadeen y que cuando se introduzca los datos en cada celda dejen de parpadear. Si me das tu correo electrónico maña

na te envió el fichero para que puedas entenderlo mejor.

muchas gracias !

Dime cuáles celdas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “pbenito28” y el título de esta pregunta.

Hola Dante,

ya te he enviado mi mail.

un saludo 

Esta es la macro

Sub StartBlink()
'Por.Dante Amor
    u = Range("B" & Rows.Count).End(xlUp).Row - 1
    If u < 13 Then u = 13
    existe = True
    For i = 13 To u
        With Cells(i, "F")
            If .Value = "" Then
                existe = False
                If .Interior.ColorIndex = 6 Then ' Amarillo
                    .Interior.ColorIndex = 3     ' Rojo
                Else
                    .Interior.ColorIndex = 6     ' Amarillo
                End If
            Else
                .Interior.ColorIndex = xlNone
            End If
        End With
    Next
    '
    If exite = True Then Exit Sub
    '
    Application.OnTime Now + TimeSerial(0, 0, 1), "'" & ThisWorkbook.Name & "'!StartBlink", , True
End Sub

Saludos.Dante Amor

Hola Dante, te he vuelto a escribir, no me deja parar no cerrar el fichero, entra en un bucle sin fin. Además me gustaría que solamente pintara las celdas que tienen en la columna anterior el símbolo #

Muchas gracias !!!!

Agregué esto en los eventos de thisworkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Por.Dante Amor
    On Error Resume Next
    Application.OnTime Now + TimeSerial(0, 0, 1), "'" & ThisWorkbook.Name & "'!StartBlink", , False
    ThisWorkbook.Save
End Sub
Private Sub Workbook_Open()
'Por.Dante Amor
    Call StartBlink
End Sub

¡Gracias! 

Con gusto, si tienes dudas de cómo aplicar el formulario avísame.

Recuerda valorar la respuesta.

¡Gracias! Excelente ayuda para mi. 

El fichero funciona perfectamente.

gracias

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

No dejes la respuesta sin valorar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas