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.

Tabla de cumpleaños en Excel

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.

Filtro en Combinar correspondencia de Word

Figura 2. Filtro en Combinar Correspondencia de Microsoft Word.

Anexos

:: Descargar el ejemplo Mostrar quienes cumplen años al abrir archivo.zip

You may also like...