VBA, Excel 2007: Alter berechnen

Hallo,

wie kann ich in VBA das Alter berechen?
In einer Textbox wird das Geburtsdatum eingetragen und ein Label soll dann das Alter in Jahren anzeigen.

Ich habe es mit Datediff versucht, aber das haut nicht vernünftig hin. Zumindest nicht auf den Tag genau.

Danke
Michael

Hallo,

wie kann ich in VBA das Alter berechen?
Ich habe es mit Datediff versucht, aber das haut nicht :vernünftig hin. Zumindest nicht auf den Tag genau.

Kann es auch nicht, denn Excel behandelt ein Datum anders als ein Mensch. Bei einer Altersberechnung betrachtet der Mensch die Jahre. Das ist Excel völlig egal, das rechnet mit Tagen.
Da Jahre Schaltjahre enthalten, kann man nicht einmal einfach die Tagesdifferenz durch 365 teilen, um die Jahre zu erhalten.
Es gibt darüber hinaus viele zu berücksichtigende Umstände. Deshalb muß in Deinem Fall diese komplizierte Formel her:

=JAHR(A2)-JAHR(A1)-WENN(DATUM(JAHR(A2);MONAT(A1);TAG(A1))

In einer Textbox wird das Geburtsdatum eingetragen und ein
Label soll dann das Alter in Jahren anzeigen.

Ich habe es mit Datediff versucht, aber das haut nicht
vernünftig hin. Zumindest nicht auf den Tag genau.

Hallo Michael,

bei welchen Datümern haut das nicht hin?
Code?

Gruß
Reinhard

Hallo Reinhard,

ich hab’s mal getestet …

Option Explicit

Private Sub Command1\_Click()
List1.AddItem DateDiff("YYYY", "11.09.2001", "10.09.2010")
List1.AddItem DateDiff("YYYY", "11.09.2001", "11.09.2010")
List1.AddItem DateDiff("YYYY", "11.09.2001", "12.09.2010")
End Sub

In der Liste steht dann tatsächlich 3 X 9. :frowning:

Erwartet hätte ich 8,9,9.

Gruß Rainer

Hallo Rainer,

List1.AddItem DateDiff(„YYYY“, „11.09.2001“, „10.09.2010“)
List1.AddItem DateDiff(„YYYY“, „11.09.2001“, „11.09.2010“)
List1.AddItem DateDiff(„YYYY“, „11.09.2001“, „12.09.2010“)
In der Liste steht dann tatsächlich 3 X 9. :frowning:
Erwartet hätte ich 8,9,9.

ähem, ich auch :smile: Okay, ich hab nicht in Vba getestet sondern in Excel mit Datedif (ja, da fehlt ein f *gg*)
Das sieht dann als Formel in einer Zelle so aus:

=DATEDIF(A1;B1;„y“)

und da kommt 8,9,9 raus.

Scheinbar wurden alle bisherigen Anfragen die ich zum Thema „Altersberechnung“ je las immer mit Excelformeln gelöst, und da klappt es ja.

Übrigens, Auch mit Schaltjahren dazwischen.

Warum es bei Vba-Datediff nun zu Fehlern kommt, weiß ich nicht.

Thomas zu Hüüüülf *wünsch* *lächel*

Ich weiß zwar daß sich Excel-Vba und Excel am 1.1.1900 unterscheiden, für die eine Seite ist es tag 0, für die andere Tag 1, von mir aus beginnt für die eine Seite das Ganze auch am 0.1.1900.
Irgendwie klappts dann doch wieder bei den Ergebnissen.

Aber ich sehe da keinen bezug zu diese problematik.

@Anfrager, Abhilfe wäre z.B. wenn du kurzzeitig in eine unbenutzte Zelle mit .Formula in etwa sowas reinschreibst,
ActiveCell.FormulaR1C1 = „=DATEDIF(RC[-2],RC[-1],“„Y“")"
und das Ergebnis ausliest, danach die Zelle wieder löschst.

Natürlich passt die Formel nicht, du hast ja keine Zellen sondern eine Textbox oder so, aber das prinzip ist das Gleiche.
Frag hier nach wenn du den Code nicht hinkriegst.

Gruß
Reinhard