Alter Zählen in VB

E-[GOR]

Cadet 4th Year
Dabei seit
Feb. 2005
Beiträge
117
Hallo! ich muss für die schule ein kleines Makro mit VB erstellen bei dem ich mein Geburtsdatum eingeben kann und mir mein exaktes alter bis zum "heutigen" tag ausgegeben wird. Kann mir bitte jemand helfen ?

THX ;)
 

forca1983

Lt. Junior Grade
Dabei seit
Feb. 2004
Beiträge
510
Gib mal im Excel in A1 dein Geburtsttag ein (z.b. 01.01.1982) und dann schreibst du in B1 folgende Formel:

=DATEDIF(B5;HEUTE();"y")

Ist das Ergebnis das was du brauchst?
 

E-[GOR]

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
117
nö eigentlcih nicht. Das sollte mit Visual Basic Programmiert werden.


Bin bis jetzt soweit

Sub Test()
Dim GebDatum As Date

z = 0

GebDatum = Inputbox("Geben Sie Ihr Geburtsdatum ein")

Datum = Date

For z = 1 To 2

Alter = Alter + (Datum - 365)

MsgBox (Alter)

Next z


End Sub



Funktioniert aber nicht
 

forca1983

Lt. Junior Grade
Dabei seit
Feb. 2004
Beiträge
510
Ach so, dann haben wir uns missverstanden. In VB kenne ich mich leider net aus ;-)
 

E-[GOR]

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Feb. 2005
Beiträge
117
nö zum schuss muss mir ausgeben werden z.b: Alter : 17


wenn ich so mach:


Sub test()

Dim Geburtsdatum As Date

Geburtsdatum = Inputbox("Geben sie ihr vollständiges Geburtsdatum ein" & Chr(13) & "(tt.mm.jj)")

Punkt = Mid(Geburtsdatum, 7, 11)
Datum = Date
Punkt1 = Mid(Date, 7, 11)


Punkt3 = Punkt1 - Punkt

MsgBox ("Ihr Alter: " & Punkt3)

End Sub



dann bekomm ich zwar das alter, jedoch werden die monate nicht beachtet und somit ist man automatisch ab dem z.B. 1.1. 1987 schon 18, obwohl ich z.B. mit dem Geb.Datum 9.9.1987 erst 17 wär
 

ag3nt

Lieutenant
Dabei seit
Okt. 2002
Beiträge
689
Hallo E-[GOR],
bei der Altersberechnung kannst du etwas tricksen um dir etwas Arbeit zu ersparen. Dazu wandelst du zuerst das eingegebene Datum in einen "Date-Datentyp" um das erledigst du schlicht mit CDate(). Aus diesem Datum erstellst du jetzt eine neue Variable vom Typ "long", so das die Zahl dann so aufgebaut ist: YYYYMMDD. Selbiges machst du mit dem aktuellen Datum. Nun subtrahierst du das Geburtsdatum vom aktuellen, teilst das Ergbnis durch 10000 um die verbleibenden Nachkommerstellen abzuschneiden. Hauptvorteil ist, dass auch Schaltjahre berücksichtigt werden.

Ich hab mal eine Funktion angehängt die alles berechnet, zwar nicht sonderlich schnell aber dafür noch leicht zu verstehen.

Code:
Public Function Age(ABirthDay As Date, Optional ANow) As Long
    If IsMissing(ANow) Then ANow = Now

    Age = (10000 * (year(ANow) - year(ABirthDay)) + 100 * (month(ANow) - month(ABirthDay)) + (day(ANow) - day(ABirthDay))) \ 10000
End Function
 

Toaster

Lt. Commander
Dabei seit
Apr. 2001
Beiträge
1.266
so geht es mit den Bormitteln sauber

Dim Geburtsdatum As Date

Geburtsdatum = InputBox("Geben sie ihr vollständiges Geburtsdatum ein" & Chr(13) & "(tt.mm.jj)")
MsgBox "Ihr Alter: " & (Round(DateDiff("m", CDate(Geburtsdatum), Date) / 12, 0))

stop

ag3nt´s variante hat den Vorteil das sie auch die Schaltjahre nutzt, das macht datediff nicht sorry
 
Zuletzt bearbeitet:

ag3nt

Lieutenant
Dabei seit
Okt. 2002
Beiträge
689
@Toaster:
DateDiff hab ich absichtlich nicht genommen wegen der Schaltjahrproblematik, sonst würde DateDiff nämlich voll ausreichen ( Round(DateDiff("m", #2/29/2000#, #2/28/2001#) / 12, 0) ist halt leider 1 und nicht 0 wie es sein sollte ). Schon schade, weil das die Funktion unbrauchbar macht, wenn es auf Tagesgenauigkeit ankommt.

edit: sehe grade der Post ist eigentlich überflüssig, den kann irgendein ein Mod löschen wenn er will :)
 
Zuletzt bearbeitet:
Top