Macro alerta de evento parpadeo de celda


En muchas ocasiones se requiere que Excel de un AVISO, ALERTA o haga recordar sobre determinado evento, ya sea una fecha de caducidad, nivel de stock o cualquier otro motivo que necesite un recordatorio, en el post anterior se mostraba un ejemplo de macro sobre aviso mediante parpadeo de celda, en esa ocasión el ejemplo consistía en que se controlaban los datos ingresados en una columna y si la suma de valores era menor a un cierto dato, corría la macro de VBA y salía un mensaje en la celda estableciendo una alerta sobre stock crítico, además de parpadear la celda cambiándose de color constantemente; sugiero si este ejemplo te interesa que veas la variante en donde en vez de dar aviso en la celda sale un  formulario de aviso cuando se abre  el archivo de Excel.


También el presente ejemplo tiene relación con la entrada publicada anteriormente, aunque es un poco más compleja en su programación, ya que además de salir un formulario de aviso de inicio al abrir el libro, Excel envía un mail con dicho recordatorio.


El procedimiento de VBA que se presenta acá esta  bastante relacionado, pero tiene ciertas, hasta diría muchas variantes con respecto al anterior; esta macro de Excel, se inicia cuando se abre el archivo de Excel, el objetivo es que Excel avise cada 30 días desde la fecha de producción (columna K) con el tope de la fecha de vencimiento que se encuentra en la columna L, si se dan estas condiciones sale un aviso y parpadea la celda de la columna A y fila correspondiente, este control lo hace desde la fila inicial hasta la última celda con datos.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.



  
Volviendo al ejemplo  macro de VBA planteado, en otras palabras, el archivo contiene una serie de productos con  su fecha de producción y su fecha de vencimiento entre otros datos; al abrir el Libro de Excel, se corre una macro o procedimiento de VBA, que controla que la fecha de aviso sea igual a la fecha de producción más 30 días, luego va avisando cada 30 días hasta llegar a la fecha de vencimiento; el aviso sale en la columna A de la fila correspondiente esto se realiza por cada uno de los productos listados, la última celda con el aviso queda parpadeando.

A continuación se trascribe el código usado, desde el link del final podrás descargar el archivo, el cual se podrá adaptar de acuerdo a lo que se necesite.

Una explicación más detallada y gráfica de la macro presentada se muestra en el vídeo que se muestra seguidamente, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo Como cerrar libro dependiendo de fecha de caducidadbuscar en listbox mientras escribes en textboxComo conectar Excel con Word crear archivo e insertar textoComo crear un autonumerico en Excel y muchos ejemplos más.







Código a insertar en ThisWorkbook

Public fila As Integer
Sub Workbook_Open()
Sheets("BD").Range("a6:a1048576").Interior.ColorIndex = 0
On Error Resume Next
Application.ScreenUpdating = False
Dim fa, fv As Date
 fila = 6

While Sheets("BD").Cells(fila, 3) <> Empty
   fa = Sheets("BD").Cells(fila, 11) + 30
   fv = Sheets("BD").Cells(fila, 12)
 
   If Sheets("BD").Cells(fila, 2) <> Empty Then
   fa = Sheets("BD").Cells(fila, 2) + 30
   End If
 
   If Date = fa And Date <= fv Then
   Sheets("BD").Cells(fila, 1).Activate
   Sheets("BD").Cells(fila, 1) = "ALERTA"
   Sheets("BD").Cells(fila, 2) = Date
   'ejecuta la rutina
   Alert
   Else
   Sheets("BD").Cells(fila, 1) = ""
   End If
 
fila = fila + 1
Wend
Application.ScreenUpdating = False
End Sub


Código que se insertar en un módulo

Sub Alert()
'Rutina ejecuta parpadeo
On Error Resume Next
    If ActiveCell.Interior.ColorIndex = 1 Then    'interior colornegro

        ActiveCell.Interior.ColorIndex = 3    'interior color rojo

        ActiveCell.Font.ColorIndex = 1   'fuente color negro

    Else

        ActiveCell.Interior.ColorIndex = 1   'interior color negro

        ActiveCell.Font.ColorIndex = 2        'fuente color blanco

    End If

'controla el contenido de la celda . Si es de Alerta, ejecuta esta rutina de cambio de colores

    If ActiveCell.Text = "ALERTA" Then

        Application.OnTime Now + TimeSerial(0, 0, 1), "Alert"

    Else

        ActiveCell.Interior.ColorIndex = 0  'interior color fijo celeste

        ActiveCell.Font.ColorIndex = 3      'fuente color fijo rojo

    End If
fila = fila + 1
End Sub





Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends