As a person who tried to master MACROS in excel, this is just an effort. I tried to make a excel sheet with birthdays of students and needed check if any birthdays are available for the date we run the script. By the way almost ok, but still need to optimize the code with a few scenarios.
The code provided is a VBA macro script for searching for birthdays in a specified range of cells in an Excel worksheet. The macro uses the IsDate
function to check if each cell in the range contains a valid date value. If a valid date value is found, the macro checks if the month and date components of the value match the current month and date using the Month
and Day
functions. If a match is found, a message box is displayed with a personalized birthday message. If no birthdays are found that match the current month and date, a message box is displayed to indicate this.
Sub SearchBirthdays() Dim rng As Range Dim cel As Range Dim foundBirthdays As Boolean ' Set the range to search for birthdays Set rng = Range("B2:B100") ' Initialize the flag for found birthdays foundBirthdays = False ' Loop through each cell in the range For Each cel In rng ' Check if the cell contains a birthday If IsDate(cel.Value) Then ' If it does, check if it's today's date If Month(cel.Value) = Month(Date) And Day(cel.Value) = Day(Date) Then ' If it is, display a message box MsgBox "Happy birthday, " & cel.Offset(0, -1).Value & "!" foundBirthdays = True End If End If Next cel ' If no birthdays were found, show a message box If Not foundBirthdays Then MsgBox "No birthdays found." End If End Sub