28.11.2017, 18:58 (Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2017, 19:48 von WillWissen.
Bearbeitungsgrund: Formatierung korrigiert
)
Hallo liebe Community,
Folgendes Problem habe ich:
Im Feld A1 habe ich das aktuelle Datum versehen mit =HEUTE()
Im Feld A2-A20 habe ich Mitglieder eines Vereins eingetragen.
Folgendes würde ich gerne bewerkstelligen:
Wenn zB Max Muster (In A2 stehen) am 21.11 Geburtstag hat soll wenn man die Tabelle aufmacht am 21.11 ein Fenster aufploppen (Eine Message) mit Max Muster hat Geburtstag. Das gleiche gilt natürlich für die anderen Mitglieder auch, wenn zB Steffi Graf (in A3) am 03.03 Geburtstag hat soll selbstverständlich am 03.03 wenn man die Tabelle öffnet eine Message aufploppen.
28.11.2017, 19:43 (Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2017, 19:44 von RPP63.)
Moin! Spiele bitte nicht mit irgendwelchen Fonts rum! Bei 20 Zeilen würde ich eine schlichte bedingte Formatierung nehmen. Formel ist: =UND(TAG(A2)=TAG(HEUTE());MONAT(A2)=MONAT(HEUTE())
Wenn Du wirklich (bei [sehr] großen Listen) VBA nutzen willst, solltest Du Dir die Range.Find-Methode (iVm Range.FindNext, falls es mal mehrere Sorgenkinder gibt) aneignen. Die VBA-Hilfe gibt Dir einen Weg vor (incl. Beispielcode): https://msdn.microsoft.com/de-de/vba/exc...xcel?f=255&MSPPError=-2147217396
Was machst Du Montags? Interessieren dann die Jubilare des Wochenendes nicht mehr?
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
hier mal eine Lösung (vor Jahren von Beverly erstellt), zwar nicht mit MsgBox, dafür mit bedingter Formatierung farbig hervorgerufen. Erklärungens tehen in der Tabelle.
Sorry wegen dem Fonts Disaster hatte einen Text woanders angefertigt und ihn dann hineinkopiert, sorry nochmal.
Da ich leider nicht wirklich sehr begabt mit in VBA würde ich gerne auf eure Hilfe zurückgreifen, natürlich nur wenn jemand sich dazu bereiterklärt und auch Lust hat.
Wie gesagt in A1 ist mit =HEUTE() das aktuelle Datum versehen.
Dann habe ich in A2 „Mustermann“, in A3 „Altmann“, in A4 „Meier“ usw stehen. (Nur die Namen!) Die Geburtstage sollen in den Feldern nicht drin stehen, sondern in einem anderem Tabellenblatt namens „Bday“. Genauso in der Reihenfolge wie die Mitglieder, also im Tabellenblatt „Bday“ in Zelle A2 der Geburtstag von „Mustermann“, in A3 der Geburtstag von „Altmann“ usw. (Insgesamt sind es 40Mitglieder)
Danke Ralf für den Hinweis! Sofern man nun als Beispiel am 30.11 die Tabelle öffnet möchte ich gerne das zuerst eine MsgBox aufgeht und drin steht „Mustermann hat Geburtstag“. (Wenn Mustermann am 30.11 Bday hat)
Nachtrag (dank dem Hinweis von Ralf): Mache ich die Tabelle am Montag auf und jemand hatte bis zu 2Tage vorher Geburtstag soll eine MsgBox aufgehen und drin stehen „Mustermann hatte am ... Geburtstag“ Bis zu 2Tage nur weil ich sonst die Befürchtung habe dass er mir alle vom ganzen Jahr anzeigen würde ?
Kann mir jemand da mit VBA helfen? Für mich ist das schon sehr kompliziert da ich nicht sehr viel Ahnung von der Materie habe.
Ich bedanke mich schon mal im Voraus für eure Hilfe.
29.11.2017, 11:19 (Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2017, 11:19 von RPP63.)
Schaue mal in die angehängte Datei. Sie beinhaltet zunächst mal "simple" Formellösungen (die man sicherlich auch mit AGGREGAT() abbilden kann, was ich gleich mal versuche).
Nachgereicht noch die versprochene AGGREGAT-Version. Für L3 wäre dies dann: =WENNFEHLER(INDEX($A:$A;AGGREGAT(15;6;ZEILE(A$1:A$2000)/($B$1:$B$2000=M$1);ZEILE($A1)));"")
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)