Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
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 ?
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
@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
warum sollte ich deinen Post löschen, mein edit könnte man ja viel zu schnell übersehen. Das mit Datediff ist superdämlich, habe ich aber erst zu spät gemerkt gehabt.