VBA Geburtsdatum

jerry0110

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine Liste mit Namen und Geburtsdaten.
Ich mache mit einer Schleife eine Abfrage wo die einzelnen Geburtsdaten sucht.
Und wenn heute jemand Geburtstag hat, dann soll er eine Mail erstellen.

Das macht er auch, wenn ich z. B. das heutige Datum nehme.
Aber die Leute haben ja nicht in im Jahr 2018 Geburtstag sondern z. B. 1978.
Jetzt möchte ich mit einer If Abfrage das nur das heutige Datum (Tag und Monat) suchen und dann wenn es vorhanden ist, eine Email erstellen.

Code:
For f = lastRowNr(source) To 1 Step -1
'If source.Range("C" & f) = Month(Date) And source.Range("C" & f) = Day(Date) Then
'If DateDiff("d", Date, DateSerial(Year(Date), Month(source.Range("C" & f)), Day(source.Range("C" & f)))) Then
If CDate(source.Range("C" & f)) = Month(Datum) And CDate(source.Range("C" & f)) = Day(Datum) Then

Habe mal meine Versuche alle drin gelassen. Bei der letzten "aktiven" Abfrage, sagt er am Schluss das der Typ unverträglich ist. Aber auch nur, weil er dann bei der Überschrift ist.
 

Yaslaw

alter Rempler
Moderator
Code:
CDate(source.Range("C" & f)) = Month(Datum)
Da vergleichst du ein ganzes Datum mit einem Monat. So wird das nix.

Entweder Monat mit Monat und Tag mit Tag verlgeichen
Visual Basic:
If _
    Month(CDate(source.Range("C" & f))= = Month(Datum) _
    AND DAY(source.Range("C" & f)) = DAY(Datum) _
Then
...

Oder du formatierst beide mit MMDD
Visual Basic:
If Format(source.Range("C" & f), "MMDD") = Format(Datum, "MMDD") Then
 

jerry0110

Erfahrenes Mitglied
Danke. Klappt.
Hatte sogar am Anfang die 2te Variante, jedoch ohne dass auch beim aktuellen Datum ich mit dem gleichen Format vergleiche.