Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA-Geburtstag alter berechnen

VBA-Geburtstag alter berechnen
16.01.2020 22:58:47
feuerharry
Hallo
Habe ein Makro vom Netz, das mir das Alter ausrechnet.
Leider habe ich erst jetzt bemerkt, dass die Jahre zwischen 01.Feb. +15.Feb
um 1 Jahr zuwenig rechnet.
Und wenn kein GebDatum in Spalte M, dann sollte Spalte N + O leer sein.
Danke für eure Hilfe.
https://www.herber.de/bbs/user/134470.xlsm
LG feuerharry
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Geburtstag alter berechnen
17.01.2020 07:15:26
SH95
Hallo Feuerharry,
Global alter(1 To 15), rtage(1 To 15), lzeile
Sub alter_berechnen()
Application.ScreenUpdating = False
lzeile = Sheets(1).Range("B65536").End(xlUp).Row
For i = 3 To lzeile
anzmonate = DateDiff("m", Cells(i, 13), Date)
jahre = Split(anzmonate / 12, ",")
restmonate = anzmonate - (jahre(0) * 12)
resttagedatum = Day(Cells(i, 13)) & "." & Month(Cells(i, 13)) & "." & Year(Date)
resttage = DateDiff("d", Date, resttagedatum)
If Cells(i, 13)  "" Then
If resttage > 0 And resttage  1 Then
Cells(i, 14) = jahre(0) & " Jahre" '& restmonate & " Monate"
End If
If restmonate = 1 Then
Cells(i, 14) = jahre(0) & " Jahre" '& restmonate & " Monat"
End If
If restmonate  1 Then
Cells(i, 15) = "noch " & resttage & " Tage"
End If
If resttage = 1 Then
Cells(i, 15) = "noch " & resttage & " Tag"
End If
If resttage = 0 Then
Cells(i, 15) = "heute"
End If
Else
Cells(i, 14).Value = ""
Cells(i, 15).Value = ""
End If
'        alter(i) = CLng(Cells(i, 13))
'        rtage(i) = resttage
'        rtage(i) = resttage
Next
For i = 2 To 500
Columns(i).AutoFit
Next
UserForm1.ClearAll
Application.ScreenUpdating = True
End Sub
So?
Gruß
Stefan
Anzeige
AW: VBA-Geburtstag alter berechnen
17.01.2020 07:15:54
SH95
Hallo Feuerharry,
Global alter(1 To 15), rtage(1 To 15), lzeile
Sub alter_berechnen()
Application.ScreenUpdating = False
lzeile = Sheets(1).Range("B65536").End(xlUp).Row
For i = 3 To lzeile
anzmonate = DateDiff("m", Cells(i, 13), Date)
jahre = Split(anzmonate / 12, ",")
restmonate = anzmonate - (jahre(0) * 12)
resttagedatum = Day(Cells(i, 13)) & "." & Month(Cells(i, 13)) & "." & Year(Date)
resttage = DateDiff("d", Date, resttagedatum)
If Cells(i, 13)  "" Then
If resttage > 0 And resttage  1 Then
Cells(i, 14) = jahre(0) & " Jahre" '& restmonate & " Monate"
End If
If restmonate = 1 Then
Cells(i, 14) = jahre(0) & " Jahre" '& restmonate & " Monat"
End If
If restmonate  1 Then
Cells(i, 15) = "noch " & resttage & " Tage"
End If
If resttage = 1 Then
Cells(i, 15) = "noch " & resttage & " Tag"
End If
If resttage = 0 Then
Cells(i, 15) = "heute"
End If
Else
Cells(i, 14).Value = ""
Cells(i, 15).Value = ""
End If
'        alter(i) = CLng(Cells(i, 13))
'        rtage(i) = resttage
'        rtage(i) = resttage
Next
For i = 2 To 500
Columns(i).AutoFit
Next
UserForm1.ClearAll
Application.ScreenUpdating = True
End Sub
So?
Gruß
Stefan
Anzeige
AW: VBA-Geburtstag alter berechnen
17.01.2020 10:06:01
feuerharry
Hy Stefan
Danke ich glaube es passt so, werde Testen.
Noch eine Frage:
was sagt die erste zeile aus
Global alter(1 To 15), rtage(1 To 15), lzeile
Danke LG feuerharry
Variablen
17.01.2020 10:55:55
SH95
Hallo Feuerharry,
damit deklarierst du deine Variablen.
gruß Stefan
AW: Variablen
17.01.2020 12:07:57
Torsten
Da stellt sich mir nur die Frage, wofuer diese Variablen (ausser lzeile) gut sind. Die werden im ganzen Code nirgends verwendet. Ausser in einem auskommentierten Teil.
Die 2. Frage fuer mich: Warum sind das globale Variablen fuer nur eine einzige Sub?
Eine VBA Programmierung wie diese verwirrt Anfaenger nur noch mehr, als sie schon verwirrt sind.
Sorry
Anzeige
AW: Variablen
17.01.2020 12:20:11
SH95
Hallo Torsten,
ich hab die Variablen nicht deklariert, sondern den bestehenden Code (wo sie schon deklariert waren) so verändert, dass es auf seine Anforderungen/Wünsche passt.
Ich hab mir aber nicht jede Codezeile/jedes Modul angesehen, ob/wo/wieso diese verwendet werden.
Sorry
AW: Variablen
17.01.2020 12:34:23
Torsten
Ah ok. Dann sage auch ich sorry. Hatte die Datei nicht gecheckt.
Anzeige
AW: Variablen
17.01.2020 13:47:08
feuerharry
Hy
Sorry melde mich wieder.
Habe jetzt ein Jahr kontrolliert, passt leider noch immer nicht
neue Testdatei hochgeladen.
https://www.herber.de/bbs/user/134486.xlsm
LG feuerharry
AW: Variablen
17.01.2020 13:56:52
SH95
Hallo nochmal, und im vorraus schonmal ein schönes Wochenende.
ich habs bei mir nochmal getestet und einen Fehler festgestellt:
Alte Code-Zeile:
For i = 3 To lzeile
Neue Zeile
For i = 2 To lzeile
Das ist die 5te Zeile von oben, er soll natürlich in Zeile 2 anfangen.
Ansonsten, hab ich das Programm mit mehreren Monats/JahresDaten getestet und bei mir gehts einwandfrei.
Gruß
Stefan
Anzeige
AW: Variablen
17.01.2020 14:49:57
feuerharry
Hy Stefan
Habe dein makro eingefügt, passt leider nicht.
dieses mal ab 18.Jän. müsste erst 19 Jahre sein
schau dir bitte die Datei noch einmal an. Danke
https://www.herber.de/bbs/user/134486.xlsm
LG feuerharry
AW: Variablen
19.01.2020 09:47:35
SH95
Hallo Feuerharry,
sorry, dass ich erst jetzt schreib, bin erst heute wieder an nen Laptop kommen.
https://www.herber.de/bbs/user/134511.xlsm
Teste mal bite
Gruß Stefan
Anzeige
AW: Variablen
19.01.2020 10:08:29
feuerharry
Hy Stefan
Jetzt passt es, was hast du geändert.
Ich seh es nicht oder überschaue es.
Recht herzlichen Dank für deine Mühe.
auf euch alle ist immer verlass.
VLG feuerharry
AW: Variablen
19.01.2020 11:20:47
Stefan
Hallo Feuerharry,
Ich hab bei der Abfrage (zweites If) ob die Resttage zwischen 0-31 sind, eingefügt, dasses auch der gleiche Monat sein muss.
Also Restmonat =0.
Somit wird das nur gerechnet und eingetragen, wenn es auch im gleichen Monat is.
Gruß
Stefan
Anzeige
AW: Variablen
19.01.2020 14:26:01
feuerharry
Hy
Sorry hätte noch 2 Bitten, ich weis ich das ich euch auf die Nerven gehe.
Programm läuft auf office 2010 32bit und office 2016 64bit
1. Bitte: Bei Datensatz neu speichern: keine doppelte ID bei neuen Datensatz ermöglichen
2: Bitte: Wenn möglich, Userform 1 Combobox 4 "Gruppe": Weitern Text in der Combobox 4 hinein schreiben, damit ich nicht in die Tabelle "Gruppe" Eintragen muss.
https://www.herber.de/bbs/user/134517.zip
Bitte, Bitte
LG feuerharry
Anzeige
AW: Variablen
20.01.2020 08:21:53
SH95
Hallo Feuerharry,
anbei ein Tipp, da dein Beitrag mittlerweile nichtmehr oben erscheint und es sich auch um ein anderes Problem handelt, würde ich für das nächste mal empfehlen, einen neuen Beitrag zu verfassen.
zu 1:
Ich hab mir das jetzt mal etwas intensiver angeschaut, dass mit der doppelten ID ist ja nicht möglich, wenn ich eine ID von Hand eintrage, wird ja schon überprüft, ob diese schon vorhanden ist. Ich hab jetzt noch hinzugefügt, dass bei jedem start der Userform die niedrigst nicht verwendete Id gesucht wird und dann in die Textbox17 geschrieben wird. Falls das nicht das ist was du wolltest, musst du einfach bei
UserForm activate
Call IDSuchen

Das "Call IDSuchen" rauslöschen.
zu 2:
du willst also deine Datenquelle der Combobox4 erweitern/abändern, hab ich das richtig verstanden?
Dann würde ich (Falls du nicht auf die Tabelle zugreifen willst) eine extra UserForm machen und diese dann abspeichern lassen.
Ich hoffe ich hab alles richtig verstanden, das wäre meine Lösung:
Die UserForm für die Datenänderung wird mit doppelklick auf das Label("Geburtstag") gestartet, verschönern bzw ausfeilen musst es dann noch selber.
https://www.herber.de/bbs/user/134541.zip
Gruß
Stefan
Ps. bei deinem nächsten VBA-Projekt würde ich dir empfehlen, die UserFormen/Comboboxen/etc. zu beschriften z.b. UserForm_Start/Combobox_Gruppe
das macht es sowohl dir im weiteren Code einfacher den Überblick zu behalten, als auch deinen Helfern.
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA zur Altersberechnung aus einem Geburtsdatum


Schritt-für-Schritt-Anleitung

Um das Alter aus einem Geburtsdatum in Excel zu berechnen, kannst du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Excel öffnen: Starte Excel und öffne eine neue oder bestehende Tabelle.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Modul einfügen: Klicke im Menü auf Einfügen > Modul.

  4. Code einfügen: Füge folgenden Code in das Modul ein:

    Global alter(1 To 15), rtage(1 To 15), lzeile
    
    Sub alter_berechnen()
        Application.ScreenUpdating = False
        lzeile = Sheets(1).Range("B65536").End(xlUp).Row
        For i = 3 To lzeile
            anzmonate = DateDiff("m", Cells(i, 13), Date)
            jahre = Split(anzmonate / 12, ",")
            restmonate = anzmonate - (jahre(0) * 12)
            resttagedatum = Day(Cells(i, 13)) & "." & Month(Cells(i, 13)) & "." & Year(Date)
            resttage = DateDiff("d", Date, resttagedatum)
            If Cells(i, 13) <> "" Then
                If resttage > 0 And resttage <> 1 Then
                    Cells(i, 14) = jahre(0) & " Jahre"
                End If
                If restmonate = 1 Then
                    Cells(i, 14) = jahre(0) & " Jahre" & " " & restmonate & " Monat"
                End If
                If resttage = 1 Then
                    Cells(i, 15) = "noch " & resttage & " Tag"
                ElseIf resttage > 1 Then
                    Cells(i, 15) = "noch " & resttage & " Tage"
                ElseIf resttage = 0 Then
                    Cells(i, 15) = "heute"
                End If
            Else
                Cells(i, 14).Value = ""
                Cells(i, 15).Value = ""
            End If
        Next i
        For i = 2 To 500
            Columns(i).AutoFit
        Next i
        UserForm1.ClearAll
        Application.ScreenUpdating = True
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Führe das Makro aus, um das Alter aus dem Geburtsdatum in Spalte M zu berechnen und in den Spalten N und O anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler bei der Altersberechnung: Wenn das Alter nicht korrekt berechnet wird, überprüfe die Zeile, in der die Schleife beginnt. Stelle sicher, dass sie bei For i = 3 To lzeile beginnt, wenn deine Daten in der Zeile 3 beginnen.
  • Leere Zellen: Wenn in Spalte M kein Geburtsdatum vorhanden ist, stelle sicher, dass die Zellen in den Spalten N und O geleert werden, wie im Code gezeigt.
  • Resttage: Wenn die Resttage nicht korrekt angezeigt werden, überprüfe die Bedingungen in der If-Abfrage. Stelle sicher, dass die Bedingungen entsprechend angepasst sind.

Alternative Methoden

Neben der Nutzung von VBA kannst du auch Formeln verwenden, um das Alter in Excel zu berechnen. Eine gängige Formel sieht folgendermaßen aus:

=DATEDIF(A1, HEUTE(), "Y")

Diese Formel berechnet das Alter, indem sie das Geburtsdatum in Zelle A1 nutzt. Der Parameter "Y" gibt an, dass du die Anzahl der Jahre berechnen möchtest.


Praktische Beispiele

  1. Geburtstagsliste erstellen: Verwende die Funktion DATEDIF, um eine Excel-Geburtstagsliste zu erstellen. Trage die Geburtsdaten in eine Spalte ein und berechne das Alter in der nächsten Spalte.

  2. Resttage bis zum Geburtstag: Um die verbleibenden Tage bis zum nächsten Geburtstag zu berechnen, kannst du diese Formel verwenden:

    =DATEDIF(HEUTE(), DATUM(JAHR(HEUTE()), MONAT(A1), TAG(A1)), "D")
  3. VBA zur Altersberechnung: Wenn du ein VBA-Makro verwendest, um das Alter zu berechnen, wie im obigen Abschnitt beschrieben, kannst du die Ergebnisse direkt in eine Tabelle exportieren.


Tipps für Profis

  • Variablen verwenden: Achte darauf, nur benötigte Variablen zu verwenden und diese klar zu benennen, um den Code leichter verständlich zu machen.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinem VBA-Code, um unerwartete Fehler abzufangen und eine benutzerfreundliche Fehlermeldung anzuzeigen.
  • Dokumentation: Dokumentiere deinen Code, um anderen (oder dir selbst) zu helfen, den Code später leichter zu verstehen.

FAQ: Häufige Fragen

1. Wie kann ich das Alter aus mehreren Geburtsdaten gleichzeitig berechnen?
Durch die Verwendung einer Schleife im VBA-Code, die über alle relevanten Zellen iteriert, kannst du das Alter für mehrere Geburtsdaten in einer einzigen Aktion berechnen.

2. Was mache ich, wenn das Geburtsdatum in einem anderen Format vorliegt?
Stelle sicher, dass das Geburtsdatum im richtigen Datumsformat vorliegt. Du kannst die Funktion DATWERT in Excel verwenden, um ein Datum aus Text zu konvertieren.

3. Ist VBA zur Altersberechnung in allen Excel-Versionen verfügbar?
Ja, VBA ist in allen modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und 2016, wie in diesem Beispiel verwendet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige