Mostrar mensaje de los que cumplen años el día de hoy en Excel
En este ejemplo contamos con una tabla de personas y cada pesona tiene una fecha de nacimiento que nos servirá para que al iniciar el archivo un cuadro de mensaje nos indique el nombre de las personas que cumplen años en la fecha actual.
Comparando fechas sin tomar en cuenta años
Si deseamos comparar la fecha actual VS la fecha de nacimiento, será necesario contemplar sólo el día y el mes de ambas fechas y dejar fuera el año, ya que es un dato instrascendente para nuestro cálculo.
Para eso nos vamos a valer de la función Texto para convertir una fecha completa con formato “dd-mm-aa” en formato “dd-mm” y así dejamos fuera el dato del año. Tal como se muestra en la siguiente línea:
WorksheetFunction.Text(FECHA_NACIMIENTO, “dd-mm”) = WorksheetFunction.Text(FECHA_ACTUAL, “dd-mm”)
Cómo funciona
En la columna llamada F_Nacimiento tenemos la fecha de nacimiento de cada persona. Cada vez que se abre el archivo hará una validación de la fecha actual y la fecha en la que nació cada persona y nos mostrará un mensaje enlistando el nombre de las persona que cumplen años ese día.
Figura 1. Se muestra un cuadro de mensaje enlistando el nombre de los cumpleañeros.
Código
En siguiente código lo añadimos al objeto ThisWorkbook.
Option Explicit Private Sub Workbook_Open() ' 'Declaración de variables ' Dim MiRango As Range Dim Celda As Range Dim Nombre, Nombre2, Mensaje ' Set MiRango = Range("Tabla1[F_Nacimiento]") ' 'Recorremos cada celda y validamos VS la fecha actual ' For Each Celda In MiRango If WorksheetFunction.Text(Celda.Value, "dd-mm") _ = WorksheetFunction.Text(Date, "dd-mm") Then Mensaje = "Las siguientes personas cumplen años el día de hoy: " & Date Nombre = Celda.Offset(0, -1).Value Nombre2 = Nombre2 & vbNewLine & Nombre End If Next Celda ' 'Mostramos mensajes ' If IsEmpty(Nombre2) Then MsgBox "No hay personas que cumplan años el día de hoy.", vbInformation, "EXCELeINFO" Else MsgBox Mensaje & Nombre2, vbInformation, "EXCELeINFO" End If End Sub
Bonus Tip
Si te has fijado, en la tabla viene una validación sobre si un contrato ya está vencido o no. En base a la fecha de contrato, se toman en cuenta 90 días para vencerse el contrato.
Si desea enviarse una carta a las personas que ya vencieron su contrato, podemos usar Combinar Correpondencia de Word en base a este artículo publicado en es mismo Blog http://blogs.itpro.es/exceleinfo/2011/05/12/uso-de-combinar-correspondencia-de-word-con-datos-de-excel/.
En la pestaña de Correspondencia en Word elegimos la opción Editar lista de destinatarios. Se mostrará un formulario con el listado de nuestros datos de Excel. Nos vamos a la columna Validar_Contrato y filtramos por VENCIDO.
Figura 2. Filtro en Combinar Correspondencia de Microsoft Word.
Anexos
:: Descargar el ejemplo Mostrar quienes cumplen años al abrir archivo.zip