Rückfrage und Kommentar
04.12.2010 18:05:04
Erich
Hi Nickname,
wo die Reise nun genau hingehen soll, wird mir aus deiner Beschreibung nicht klar.
Wenn jemand am 04.12.1915 geboren ist, hat er in 2010 einen runden Geburtstag (nach Definition),
der er ist über 90.
Derjenige hat aber in 2011 - im nächsten Jahr - auch einen runden Geburtstag - ist ja immer noch über 90.
Was soll welche Funktion dann ausgeben?
- den Tag des runden Geburtstages in 2010?
- den Tag des runden Geburtstages in 2011?
- beide? (wohin?)
Wenn in GebRund ein X ausgegeben wird, weiß man nicht, ob der Runde in diesem oder im nächsten Jahr liegt,
oder vielleicht in beiden.
Ich habe deine bisherigen Funktionen etwas bearbeitet:
Option Explicit
Function GebDiesesJahr(wert, Optional Tag)
' Ist wert leer oder kein Datum, keine Umwandlung
If Not IsDate(wert) Or IsNull(wert) Then
GebDiesesJahr = Null
Else
If IsMissing(Tag) Then
'Rückgabe des Geburtsdages in diesem Jahr als Datum
' GebDiesesJahr = CDate(Format(DateSerial(Year(Date), _
' Month(wert), Day(wert)), "dd/mm/yy"))
GebDiesesJahr = DateSerial(Year(Date), Month(wert), Day(wert))
Else
'Rückgabe des Geburtsdages in diesem Jahr als Text (Wochentag)
' GebDiesesJahr = CStr(Format(DateSerial(Year(Date), _
' Month(wert), Day(wert)), "dddd"))
GebDiesesJahr = Format(DateSerial(Year(Date), _
Month(wert), Day(wert)), "dddd")
End If
End If
End Function
Function GebRund(gebDate As Range) As Variant
If Not IsDate(gebDate.Value) Or IsNull(gebDate.Value) Then
GebRund = Null
Else
Select Case Year(Now) - Year(gebDate.Value)
Case 50, 60, 65, 70, 75, 80, 85
GebRund = "X" 'Gibt ein "X" aus
'GebRund = Year(Now) - Year(gebDate.Value) 'Gibt das Alter aus
'GebRund = Year(gebDate.Value) 'Gibt das Geburts-Jahr aus
Case 49, 59, 64, 69, 74, 79, 84, 89
GebRund = "Y" 'Gibt ein "X" aus
Case Is >= 90
GebRund = "X" 'Gibt ein "X" aus
'GebRund = Year(Now) - Year(gebDate.Value) 'Gibt das Alter aus
'GebRund = Year(gebDate.Value) 'Gibt das Geburts-Jahr aus
Case Else
GebRund = ""
End Select
End If
End Function
Zu 'GebDiesesJahr':
CDate(Format(DateSerial(...))) ist unnötig.
DateSerial(...) ergibt ein Date. Das willst di haben.
Wozu machst du daraus mit Format() einen String,
den du mit CDate() dann gleich wieder zu einem Date machst?
CStr(Format()) ist auch unnötig.
Format() liefert bereits einen String. Wofür dann CStr?
Zu 'GebRund':
Meine Varianbe gibt bei runden Geburtstagen imm nächsten Jahr (außer bei über 90-jährigen) ein Y aus.
Der "Case Else" erspart einige Schreibarbeit...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort