Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - aktuelle Geburtstage anzeigen

VBA - aktuelle Geburtstage anzeigen
05.07.2015 14:34:36
WalterK
Hallo,
den Code habe ich hier gefunden, er zeigt beim Öffnen der Datei die heutigen Geburtstage an. Läuft prima.
Ich hätte gern, dass in der MSG-Box bei der Anzeige des Alters z.B. (50) rechts daneben das Wort "Runder Geburtstag" steht, wenn die Zahl durch 10 (ohne Rest) teilbar ist.
Option Explicit
Private Sub Workbook_Open()
Dim rng As Range
Dim strMsg As String
On Error Resume Next
With Sheets("Mitglieder")
For Each rng In .Range("E2:E" & Application.Max(2, .Cells(.Rows.Count, 5).End(xlUp).Row))
If DateSerial(Year(Date), Month(rng), Day(rng)) = Date Then
strMsg = strMsg & Left(.Cells(rng.Row, 3).Text & " " & .Cells(rng.Row, 4).Text & String( _
35, " "), 35) & vbTab & "(" & Year(Date) - Year(rng) & ")" & vbLf
End If
Next
End With
If Len(strMsg) Then
strMsg = "Geburtstage am " & Format(Date, "dddd, dd.MM.yyyy") & vbLf & vbLf & strMsg
MsgBox strMsg
End If
On Error GoTo 0
End Sub
Besten Dank für die Hilfe, Servus Walter

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - aktuelle Geburtstage anzeigen
05.07.2015 15:38:29
Sepp
Hallo Walter,
Private Sub Workbook_Open()
  Dim rng As Range
  Dim strMsg As String
  
  On Error Resume Next
  
  With Sheets("Mitglieder")
    For Each rng In .Range("E2:E" & Application.Max(2, .Cells(.Rows.Count, 5).End(xlUp).Row))
      If DateSerial(Year(Date), Month(rng), Day(rng)) = Date Then
        strMsg = strMsg & Left(.Cells(rng.Row, 3).Text & " " & .Cells(rng.Row, 4).Text & String(35, " "), 35) & _
          vbTab & "(" & Year(Date) - Year(rng) & ")" & IIf(((Year(Date) - Year(rng)) Mod 10) = 0, vbTab & "Runder Geburtstag!", "") & vbLf
      End If
    Next
  End With
  
  If Len(strMsg) Then
    strMsg = "Geburtstage am " & Format(Date, "dddd, dd.MM.yyyy") & vbLf & vbLf & strMsg
    MsgBox strMsg
  End If
  
  On Error GoTo 0
End Sub


Gruß Sepp

Anzeige
Genau so. Danke Sepp! Servus, Walter o.T.
05.07.2015 15:50:28
WalterK

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Aktuelle Geburtstage in Excel anzeigen


Schritt-für-Schritt-Anleitung

Um aktuelle Geburtstage in Excel anzuzeigen, kannst Du den folgenden VBA-Code verwenden. Dieser Code zeigt beim Öffnen der Datei die heutigen Geburtstage an und ergänzt die Anzeige um das Alter sowie eine Markierung für runde Geburtstage.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke im Projekt-Explorer mit der rechten Maustaste auf DieseArbeitsmappe und wähle Code anzeigen.

  3. Füge den folgenden VBA-Code in das Fenster ein:

    Option Explicit
    Private Sub Workbook_Open()
       Dim rng As Range
       Dim strMsg As String
       On Error Resume Next
       With Sheets("Mitglieder")
           For Each rng In .Range("E2:E" & Application.Max(2, .Cells(.Rows.Count, 5).End(xlUp).Row))
               If DateSerial(Year(Date), Month(rng), Day(rng)) = Date Then
                   strMsg = strMsg & Left(.Cells(rng.Row, 3).Text & " " & .Cells(rng.Row, 4).Text & String( _
                   35, " "), 35) & vbTab & "(" & Year(Date) - Year(rng) & IIf(((Year(Date) - Year(rng)) Mod 10) = 0, " Runder Geburtstag!", "") & ")" & vbLf
               End If
           Next
       End With
       If Len(strMsg) Then
           strMsg = "Geburtstage am " & Format(Date, "dddd, dd.MM.yyyy") & vbLf & vbLf & strMsg
           MsgBox strMsg
       End If
       On Error GoTo 0
    End Sub
  4. Speichere die Datei als Excel-Arbeitsmappe mit Makros, um sicherzustellen, dass der Code ausgeführt wird.

  5. Schließe den VBA-Editor und öffne die Arbeitsmappe erneut, um die aktuellen Geburtstage anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Der Code wird nicht ausgeführt"

    • Lösung: Stelle sicher, dass die Datei im richtigen Format gespeichert wurde (z.B. .xlsm) und dass Makros in Excel aktiviert sind.
  • Fehler: "Keine Geburtstage angezeigt"

    • Lösung: Überprüfe, ob die Daten im richtigen Format in der Spalte E (Geburtstag) eingetragen sind. Das Datum sollte im Excel-Datumsformat vorliegen.

Alternative Methoden

Eine alternative Methode zur Anzeige der aktuellen Geburtstage könnte die Verwendung von Excel-Formeln sein. Zum Beispiel könntest Du die Funktion HEUTE() in Kombination mit WENN() und FILTER() verwenden, um die heutigen Geburtstage direkt in einer Zelle anzuzeigen.

=WENN(E2=HEUTE(); "Geburtstag: " & A2; "")

Diese Methode ist weniger flexibel als die VBA-Lösung, erfordert aber keine Programmierkenntnisse.


Praktische Beispiele

Wenn Du eine Liste von Mitgliedern mit Geburtsdaten hast, stelle sicher, dass die Daten in der richtigen Struktur vorliegen:

Vorname Nachname Geburtstag
Max Mustermann 15.05.1975
Anna Beispiel 10.10.1980

Mit dem oben genannten VBA-Code kannst Du die heutigen Geburtstage für diese Liste anzeigen lassen, indem Du die Namen und das Alter direkt in der MsgBox siehst.


Tipps für Profis

  • Verwende bedingte Formatierung: Du kannst die Zellen, die dem heutigen Datum entsprechen, farblich hervorheben, um sie besser sichtbar zu machen.
  • Erweiterte Logik: Füge zusätzliche Bedingungen im VBA-Code hinzu, um besondere Anlässe zu markieren, wie z.B. Jubiläen oder andere relevante Daten.
  • Datenbankanbindung: Wenn Du viele Daten hast, ziehe in Betracht, die Geburtstagsdaten aus einer Datenbank abzurufen, anstatt sie manuell in Excel zu verwalten.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um auch zukünftige Geburtstage anzuzeigen? Um zukünftige Geburtstage anzuzeigen, passe die Bedingung im Code an, um Daten mit einem Datum größer als Date zu überprüfen.

2. Funktioniert dieser Code auch in Excel Online? Nein, VBA wird nicht in Excel Online unterstützt. Dieser Code kann nur in der Desktop-Version von Excel verwendet werden.

3. Können weitere Informationen angezeigt werden? Ja, Du kannst den Code erweitern, um zusätzliche Informationen wie E-Mail-Adressen oder andere relevante Details anzuzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige