Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
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

Geburtstage mit Alter in MsgBox anzeigen

Geburtstage mit Alter in MsgBox anzeigen
07.02.2022 06:49:49
Sarah
Hallo zusammen,
ich brauche Hilfe!
Ich habe eine eine Mitarbeiterliste mit dem vollständigen Geburtsdatum in J3, in D3 die Vor- und in E3 die Nachnamen.
Meine MsgBox zeig die aktuellen Geburtstagskinder mit Alter an.
Ich Scheitere an dem Wunsch an einem Montag ("Heute":07.02.2022) auch die Geb´s von Samstag (05.02.2022) und Sonntag (06.02.2022) zusehen.
Dazu jeden Tag eine Vorschau vom nächsten Tag zusehen.
Und wenn ich die Liste an einem Freitag ("Heute":04.02.2022) öffne möchte ich Samstag(05.02.2022), Sonntag(06.02.2022) und Montag(07.02.2022) sehen.
Dies ist mein aktueller Code:

Private Sub Workbook_Open()
Dim rng As Range
Dim strMsg As String
With Sheets("MA-Daten")
For Each rng In .Range("J3:J" & Application.Max(2, .Cells(.Rows.Count, 10).End(xlUp).Row))
If DateSerial(Year(Date), Month(rng), Day(rng)) = Date Then
strMsg = strMsg & Left(.Cells(rng.Row, 5).Text & " " & .Cells(rng.Row, 4).Text & String(35, " "), 35) & vbTab & "(" & Year(Date) - Year(rng) & ")" & vbLf
End If
Next
End With
If Len(strMsg) Then
strMsg = "Geburtstage am " & Format(Date, "dddd, dd.MM.yyyy") & vbLf & vbLf & strMsg
MsgBox strMsg
Else
MsgBox "Heute hat keiner Geburtstag!"
End If
End Sub
Und hier die Übungsdatei:
https://www.herber.de/bbs/user/150941.xlsm
Vielen Dank schonmal für eure Unterstützung.
LG
Sarah

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Excel 365
07.02.2022 07:39:56
RPP63
Moin!
In Deiner Excel-Version macht man so etwas mit einer einzigen Formelzelle:
(999 Geburtsdaten gefiltert auf >=letzter Arbeitstag und
 ABCDEFG
1GebtagNameAlter GebtagNameAlter
203.02.1960Name 00162 05.02.1992Name 00730
304.10.2002Name 00219 08.02.2003Name 08618
408.01.1984Name 00338 08.02.1993Name 20428
523.06.2009Name 00412 06.02.1979Name 31443
611.05.1967Name 00554 07.02.2006Name 33316
723.04.1993Name 00628 05.02.1969Name 62653
805.02.1992Name 00730 05.02.1989Name 64033
921.02.1982Name 00839 06.02.1963Name 68959
1031.10.2006Name 00915 04.02.1995Name 81827
1119.04.1985Name 01036 06.02.1970Name 82152
1202.01.2008Name 01114 05.02.2009Name 99313
1325.10.1960Name 01261    
1421.10.1978Name 01343    
1521.06.2005Name 01416    
1619.02.1995Name 01526    

ZelleFormel
C2=DATEDIF([@Gebtag];HEUTE();"y")
E2=LET(gt;TEXT(Tabelle2[Gebtag];"MMTT");FILTER(Tabelle2;((gt>=TEXT(ARBEITSTAG(HEUTE();-1);"MMTT"))*(gt=TEXT(HEUTE()+1;"MMTT")))))

Kann man natürlich auch noch SORTIERENNACH()
Gruß Ralf
Anzeige
und jetzt nach Geburtstag sortiert
07.02.2022 07:54:48
RPP63
 ABCDEFG
1GebtagNameAlter GebtagNameAlter
203.02.1960Name00162 04.02.1995Name81827
304.10.2002Name00219 05.02.1992Name00730
408.01.1984Name00338 05.02.1969Name62653
523.06.2009Name00412 05.02.1989Name64033
611.05.1967Name00554 05.02.2009Name99313
723.04.1993Name00628 06.02.1979Name31443
805.02.1992Name00730 06.02.1963Name68959
921.02.1982Name00839 06.02.1970Name82152
1031.10.2006Name00915 07.02.2006Name33316
1119.04.1985Name01036 08.02.2003Name08618
1202.01.2008Name01114 08.02.1993Name20428
1325.10.1960Name01261    
1421.10.1978Name01343    
1521.06.2005Name01416    

ZelleFormel
C2=DATEDIF([@Gebtag];HEUTE();"y")
E2=LET(gt;TEXT(Tabelle2[Gebtag];"MMTT");
f;FILTER
(Tabelle2;((gt>=TEXT(ARBEITSTAG(HEUTE();-1);"MMTT"))*(gt=TEXT(ARBEITSTAG(HEUTE();1);"MMTT"))));
SORTIERENNACH
(f;TEXT(INDEX(f;;1);"MMTT")))

Anzeige
AW: und jetzt nach Geburtstag sortiert
07.02.2022 07:59:20
Sarah
Hallo Ralf,
ich hätte es gerne über VBA über eine MsgBox ausgegeben.
aber vielen dank für deine Idee :)
LG Sarah
kein Problem!
07.02.2022 08:01:54
RPP63
Ist halt nur schade, dass Du Deinen Ferrari nur zum Brötchenholen nutzt!
AW: Geburtstage mit Alter in MsgBox anzeigen
07.02.2022 07:53:53
Stefan
Hallo Sarah,
wie Ralf schon geschrieben hat, geht das natürlich auch per Formel.
Falls du es aber per VBA lösen willst, hier meine Idee dazu:
https://www.herber.de/bbs/user/150943.xlsm
Gruß
Stefan
AW: Geburtstage mit Alter in MsgBox anzeigen
07.02.2022 08:11:28
Sarah
Hallo Stefan,
Perfekt vielen Dank :)
nur ein Detail für die, die den Code auch nutzen möchten,

If strMsg2  "" Then
strMsg = strMsg & vbLf & "Geburtstage am " & Format(Date - 1, "dddd, dd.MM.yyyy") & vbLf & vbLf & strMsg2
End If

das -1 in -2 umwandeln sonst steht 2x der selbe Tag drin :)
Jetzt hätte ich nur noch eine Schönheitsfrage, die MsgBox gefällt mir so ganz gut.
Nur das, dass Alter bei längeren Namen etwas weiter hinten steht als bei den anderen, stört mein Auge doch etwas.
Was gibt es da für Einstellungen das, dass Alter immer untereinander steht?
Anzeige
AW: Geburtstage mit Alter in MsgBox anzeigen
07.02.2022 08:22:38
Stefan
Hallo Sarah,
Punkt 1 natürlich vollkommen richtig.
Ich würde das "anderstrum" anzeigen lassen, zuerst das Alter und dann den Namen:

strMsg = strMsg & "(" & Year(Date) - Year(rng) & ")" & " " & Left(.Cells(rng.Row, 5).Text & " " & .Cells(rng.Row, 4).Text & String(35, " "), 35) & vbLf
bzw mit Tab:

strMsg = strMsg & "(" & Year(Date) - Year(rng) & ")" & vbTab & Left(.Cells(rng.Row, 5).Text & " " & .Cells(rng.Row, 4).Text & String(35, " "), 35) & vbLf
ob dir das leerzeichen reicht oder du einen Tab haben willst für die Optik musst du entscheiden.
Gruß
Stefan
Anzeige
AW: Geburtstage mit Alter in MsgBox anzeigen
07.02.2022 09:44:14
Sarah
Vielen Dank für die schnelle Hilfe.
Hat alles super funktioniert :)
LG
Sarah
gerne....
07.02.2022 09:54:59
Stefan
danke für deine Rückmeldung.
Schöne Woche wünsche ich noch :)
Gruß
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige