Un lector recién me ha solicitado ayuda sobre como hacer para que Excel nos dé una alerta si la fecha del sistema coincide con alguna ingresada en el libro. Es interesante y muy útil saber sobre esto y como existen un par de formas para desarrollarlo decidí levantar una entrada sobre el tema.
Con Excel siempre nos encontramos ante una disyuntiva: ¿lo hacemos con o sin macros? Eso dependerá de las necesidades y características del trabajo a realizar, por lo cual analizaremos ambas.
Vamos primero sin macros: En A1 colocamos la "fecha de aviso", la que Excel deberá analizar y avisarnos si coincide con la fecha del sistema:
en A1 pusimos 18/08/2011. si esa fecha coincide con la actual, haremos que Excel avise con un mensaje
[+/-] Ver el resto / Ocultar
En A2 ingresamos:
=SI(HOY()=A1;"alerta";"")
O sea: si la fecha de HOY() es igual a la fecha que ingresamos en A1, aparecerá la palabra "alerta". Podemos agregar en A2 algún formato condicional, para resaltar mejor el mensaje:
Lo que se verá traducido en esto:
Si ponemos una fecha distinta en A1, todo vuelve a la normalidad:
Con macros:
Nos vamos a VBA (alt + f11), para luego dirigirnos a objeto "ThisWorkbook", sobre el panel de navegación, a la izquierda de la pantalla:
Hacemos doble click sobre el para desplegar la ventana de código, seleccionando Workbook y el evento Open, como se muestra en la siguiente figura:
El código está bien comentado y no merece mayores análisis. Comparo la fecha del sistema con la que ingresamos en A1, si son coincidentes, ejecuto un determinado procedimiento. En este caso es un simple mensaje, pero he realizado sistemas que ante una fecha predefinida, listaba todas las ventas anteriores a ella, elaboraba un reporte, creaba un documento PDF con el y lo mandaba por mail a una serie de direcciones. Todo ello sin que el usuario interviniera para nada. Mas que útil, y todo lo descritpo está dentro del blog para que Uds. puedan desarrollarlo.
Suerte.
n de la r: olvidé postearlo, pero sería conveniente que en la celda en la cual ingresemos la fecha en cuestión, sea aplicada la "Validación de Datos". De esta forma evitamos que el usuario (o nosotros mismos) se equivoque y ponga un valor cualquiera, distinto al de una fecha.
ResponderEliminarHola damian como hago para que esta macro se active, ya que digito el codio y para que funcione debo correrlo desde la ventana de visual basic. como hacer para que cuando coincida la fecha salga el mensaje automaticamente.
ResponderEliminarte vas a visual basic y desde el explorador de objetos haces doble click sobre la hoja en donde ingresarás la fecha, para abrir la ventana de código de esa hoja. Luego seleccionas el evento:
ResponderEliminarPrivate Sub Worksheet_Change(ByVal Target As Range)
End Sub
Bien: ese evento se activa cada vez que se produzca un cambio en cualquier celda de la hoja. Supongamos que a la fecha la ingresas en A1, entonces el código dentro de ese Sub te quedaría:
Private Sub Worksheet_Change(ByVal Target As Range)
if target.address="$A$1" then
if target.value <> "" then
if isdate(target.value) then
if target.value = fecha then
'aqui aplicas el codigo
end if
end if
end if
end if
End Sub
habrás visto que anidé 4 if, de forma sencilla:
primero pregunto que el cambio se haya realizado en la celda A1 (que es donde ingresas la fecha)
segundo pregunto que haya algún valor en A1
tercero consulto si ese valor es una fecha
y cuarto: si la fecha coincide, se ejecuta el código que tengas ahí dentro.
avisame si te sirve o necesitas que te pase algún archivo.
gracias por tus mensajes
Buenas primero que todo excelente blog felicitaciones!!!. quisiera que me ayudaras con lo siguiente en la columna A tengo varias fechas de pago de intereses y en la columna B tengo la fecha del hoy del sistema y en la columna C tengo la comparacion entre A y B en donde son iguales me muestre la palabra ALERTA finalmente en la columna D tengo el pago de cada fecha. lo que quiero saber es como hacer para que en un formulario me muestre los pagos que se deben hacer ese dia y su valor al abrir el archivo de excel, es decir cuando abra excel me diga un cuadro tiene que pagar esto.
ResponderEliminarmuchas gracias
Hola Daniel. Muy buena pregunta, ya que es un tema recurrente esto de las alertas de fechas en Excel. Ahora levanto un post al respecto y te paso el link.
ResponderEliminarAqui te dejo el link: cualquier duda o modificación que necesites me avisas.
ResponderEliminarSuerte y gracias x tu mensaje
http://damianexcel.blogspot.com/2011/12/alertas-de-fechas-con-excel-parte-ii.html
Hola Damian,
ResponderEliminarFelicitaciones por tu página, es de mucha utilidad.
En tu desarrollo de "alertas de fechas con Excel" hablas que generas un reporte y este es enviado por e-mail.
Quisiera saber como generar un reporte (Excel, pdf, etc..) de solo aquellas líneas que aparezca "ALERTA" y enviar éste último x e-mail cada vez que haya una nueva ALERTA, todo sin abrir Excel, sino cada vez que enciendo el ordenador.
Muchas gracias de antemano.
Luis
Luis: es imposible hacer que Excel realice alguna acción sin abrirlo previamente.
ResponderEliminarQuizás se podría colocar en la carpeta de Inicio del sistema operativo (un link) y que se ejecute dicho libro, y yqe luego de correr la macro se cierre.
Y para ayudarte con el problema, tendrías que enviarme el archivo, así veo bien la estructura del mismo y trabajo sobre el.
Me parece interesantisimo este tema de las alertas y sobre todo de la parte II donde sale un formulario, me gustaria saber si puedo hacer el calculo pero sin que sea exactamente la fecha completa, es decir, quiero que me alerte sobre aniversarios mensuales (si se puede decir asi), me explico mejor, tengo fechas importantes que quiero recordar mensualmente, digamos que un acontecimiento ocurrio el 27/02/2011, para recordarlo anualmente seria el 27/02/2012, pero yo quiero recordarlo mensualmente, es decir, el 27/03/2011, el 27/04/2011 y asi, y quiero que excel lo haga por mi, y en un formulario, asi como lo muestras en alertas de fechas con excel II, es posible crear tal alerta?
ResponderEliminarAngel: si, es totalmente posible. Mira el siguiente código:
ResponderEliminarIf IsDate(Range("a1").Value) Then
If Day(Now) = Day(Range("a1").Value) Then
MsgBox "hoy es " & Day(Now)
End If
End If
Explicación:
Con el primer If.. verifico que en A1 haya una fecha. Si es así, con el otro If... digo: si el día de hoy (now) es igual al día de la fecha en A1.... muestro un mensaje.
¿Se entiende? Lo probé y funciona correctamente, cualquier cosa me avisas.
Muchas gracias x tu mensaje
como agregar un alerta partiendo de una fecha, por ejemplo tengo una fecha y quiero un alerta 5 días después.
ResponderEliminarcecilia:
ResponderEliminardesconozco en que ámbito estás utilizando las fechas, pero por ejemplo puedo citarte: en A1 pones 12/01/2014 y en B1 =A1 + 5: el resultadoen B1 sería 17/01/2014, es decir, cinco días después del 12. Es sencillo, solamente una cuestión de sumas.
La misma lógica se aplicaría al formato condicional.
Como hago para que excell me envie un mail recordando un vencimiento de pago???
ResponderEliminarBueno, el procedimiento sería el mismo, solo que indicando una condicional.
ResponderEliminarSupongamos que en A1 colocas: =HOY(), para de esta forma saber la fecha del sistema.
Luego, y antes del código que envía el correo, deberías colocar este código:
If range("a1").value = "17/08/2014" then
'aqui va el código que envia el mail
End If.
La cosa es sencilla: antes de enviar el correo preguntas si estamos o no en una fecha dada: si la fecha es la que coincide con tus registros, se envía el correo, caso contrario no pasa nada.
Espero que te sirva. Gracias x tu mensaje
Buena tardes me gustaría saber si hay alguna forma en que Excel me cambie de color o me mande una nota cuando un cliente cumpla años o el día de su profesión
ResponderEliminarOmar: tendría que ver en qué formado tienes las fechas, si están por columnas, filas, etc, etc. Pero supongamos que tu fecha está en A1.
ResponderEliminarSeleccionas esa celda, te vas a formato / formato condicional, de la primer lista desplegable eliges "formula" y luego ingresas en el cuadro esto: =Y(MES(A1)=MES(HOY());DIA(A1)=DIA(HOY())). Luego vas a las preferencias del fomato (color de fondo, lineas, fuente, etc) y das aceptar. Esa función que te pasé evalúa dos cosas: Que el MES y el DIA de A1 sean iguales al MES y DIA de la fecha del sistema. ¿Se entiende? Si esos dos datos de A1 coinciden con el mes y día de HOY() (fecha del sistema, se cumple la condición y, por lo tanto, se aplicará el formato seleccionado.