Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Runde Geburtstage berechnen

Runde Geburtstage berechnen
ABO
Hallo zusammen,
ich würde gern mein Makro insoweit umändern, so das es nicht nur die Runden Geburtstage vom aktuellen Jahr anzeigt sondern das es vom nächsten Jahr die Runden Geb. berechnet.
Wie und wo muss ich was ändern?
'Runde Geburtstage berechnen!!!
Function GebDiesesJahr(wert, Optional Tag)
' Ist wert Lerr 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 Wochentag
GebDiesesJahr = CDate(Format(DateSerial(Year(Now()), Month(wert), Day(wert)), "dd/ _
mm/yy"))
Else
'Rückgabe des Geburtsdages in diesem Jahr als Tag
GebDiesesJahr = CStr(Format(DateSerial(Year(Now()), 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
Exit Function
End If
Select Case Year(Now) - Year(gebDate.Value)
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
End Select
End Function

Gruß ABO

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Runde Geburtstage berechnen
04.12.2010 10:08:06
CitizenX
Hallo ABO
Select Case Year(Now) + 1 - Year(gebDate.Value)
Grüße
Steffen
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige