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...

  • Logan

    Hola
    Si quisiera sacar el mismo cuadro de dialogo para que me avisara sobre las personas quienes se les vencieron el contrato, seria algo asi?

    Dim valor As String
    ‘Dim texto As String
    ‘Dim celda1 As Long
    ‘valor = “VENCIDO”
    ‘Set MiRango1 = Range(“W3:W2000”).Select
    ‘Do While ActiveCell.Value “”
    ‘texto = ActiveCell.Text
    ‘celda = InStr(texto, valor)

    ‘If celda 0 Then
    ‘Mensaje = “Las siguientes personas se les vence el contrato: ”
    ‘ Nombre = celda.Offset(0, -2).Select
    ‘ Nombre3 = celda.Offset(0, -4).Select
    ‘ Nombre2 = Nombre2 & vbNewLine & Nombre & ” ” & Nombre3
    ‘Else

    ‘ActiveCell.Offset(1, 0).Select
    ‘End If

    ‘Loop

  • Pingback: Mostrar mensaje de los que cumplen años el día de hoy en Excel | MVPs de LATAM()

  • Eduardo Rodriguez

    Hola , Si quisiera sacar el mismo cuadro de dialogo para una columna numerica y que me dijera cuales personas tienen vencimiento mayor a x numero , por ejemplo; mi columna tiene la cantidad de dias vencido que tiene el contrato y en esa columna me gustaria que el dialogo me dijera cuales personas tienen el contrato vencido mayor a 30 .
    Gracias

  • jua

    pero como le hago para insertar el codigo que sugiere logan, para abrir un cuadro de dialogo que el contrato esta por vencerse, donde lo inserto como abro la aplicacion para insertarlo