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.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Alter Zählen in VB
- Ersteller E-[GOR]
- Erstellt am
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
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
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
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
- Registriert
- 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.
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
- Registriert
- 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
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
- Registriert
- 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
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:
Ähnliche Themen
- Antworten
- 8
- Aufrufe
- 825
- Antworten
- 9
- Aufrufe
- 752
- Geschlossen
- Antworten
- 2
- Aufrufe
- 284
- Antworten
- 12
- Aufrufe
- 1.172