Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Macro Formulario de Aviso


.

En esta oportunidad les presento una variante del ejemplo macro de alerta mediante parpadeo de celda, el objetivo de la macro de VBA es solicitar a Excel que emita un AVISO, ALERTA o permita recordar un suceso próximo de cierta situación, puede ser fecha de caducidad, nivel de stock o cualquier otro motivo que necesite un recordatorio, difiere del anterior en que ahora sale un formulario de alerta, cosa que en el otro archivo ejemplo se mostraba un aviso en la celda mediante un parpadeo.

En uno de los primeros ensayos se expuso también una 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.

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.

  

El presente ejemplo tiene relación con la entrada publicada anteriormente, aunque es un poco más compleja en su programación, ya que en el anterior ejemplo 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 en el post consiste en que cada vez que se abra el archivo; la macro de Excel, revisa las fechas de producción (Columna J) y caducidad (Columna K), el fin es que Excel avise cada 30 días desde la fecha de producción  con el tope de la fecha de vencimiento, si se dan estas condiciones sale un formulario dando dicho  aviso, el userform se muestra dos segundos y se cierra solo transcurrido ese lapso; este control lo hace desde la fila inicial hasta la última celda con datos.

Entrando en detalles, cuando bajes el archivo de excel, verás que 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; emitiendo un formulario de alerta que se cierra solo pasados dos segundos, el mismo lo podrás descargar desde el link del final, pudiendo ser adaptado a lo que específicamente se requiera, ya que el código no tiene restricción alguna.

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

Private Sub Workbook_Open()
Call FormAviso
End Sub

Código  a insertar en formulario

Private Sub UserForm_Activate()
Tpo = «00:00:02»
Label1.Font = arial
Label1.Font.Size = 10
Label1.Caption = msj
Application.Wait Now + TimeValue(Tpo)
UserForm1.Hide
End Sub

Código que se insertar en un módulo


Public msj As String
Sub FormAviso()
On Error Resume Next
Application.ScreenUpdating = False
Dim fila As Integer
Dim msj1, msj2, msj3 As String
Dim fa, fv As Date
 fila = 6

While Sheets(«BD»).Cells(fila, 3) <> Empty
   fa = Sheets(«BD»).Cells(fila, 10) + 30
   fv = Sheets(«BD»).Cells(fila, 11)
 
   If Sheets(«BD»).Cells(fila, 1) <> Empty Then
   fa = Sheets(«BD»).Cells(fila, 1) + 30
   End If
 
   If Date = fa And Date <= fv Then
    Sheets(«BD»).Cells(fila, 1) = Date
   ‘ejecuta la rutina
    msj1 = Sheets(«BD»).Cells(fila, 3).Text
    msj2 = Sheets(«BD»).Cells(fila, 6).Text
    msj3 = Sheets(«BD»).Cells(fila, 11).Text
    msj = «El código  » & msj1 & «, cuyo producto es » & msj2 & Chr(10) & _
    «tiene fecha de Vencimiento el » & msj3 & Chr(10) & Chr(10) & _
    «Hoy es » & Date
 
    UserForm1.Show

   End If
 
fila = fila + 1
Wend
Application.ScreenUpdating = False
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