.
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.
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.
Private Sub Workbook_Open()
Call FormAviso
End Sub
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 gustó por favor compártelo con tus amigos
If you liked please share it with your friends