Alter Zählen in VB

E-[GOR]

Cadet 4th Year
Registriert
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 ;)
 
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?
 
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
 
Ach so, dann haben wir uns missverstanden. In VB kenne ich mich leider net aus ;-)
 
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
 
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
 
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:
@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:
Zurück
Oben