Ich habe den folgenden Coder, der mir beim öffnen der Arbeitsmappe anzeigt, falls jemand am aktuellen Tag Geburtstag hat. Der Code funktioniert an sich nun habe ich folgendes Problem:
Falls zwei Leute am gleichen Tag Geburtstag haben macht er mir eine Msg Box auf mit den Angaben der ersten Person und nach dem wegklicken der Msg Box, eine zweite Msg Box mit den Angaben der ersten und der zweiten Person.
Wie kriege ich es hin, dass er mir nur die Box mit beiden Personen anzeigt?
Hier wäre der Code
Code:
Dim i As Integer Dim bStr As String bStr = "Heute hat, " For i = 1 To Cells(65536, 5).End(xlUp).Row Debug.Print Cells(i, 5) If Format(Cells(i, 5).Value, "dd.mm.yyyy") = Format(Now, "dd.mm.yyyy") Then bStr = bStr & Cells(i, 3) & " " & Cells(i, 4) & " aus Zimmer " & Cells(i, 13) & " Geburtstag" & Chr$(13) MsgBox bStr End If Next
Sub test() Dim intZeile As Integer Dim varDatArr() As Variant Dim intAnz As Integer For intZeile = 2 To 10 If CDate(Cells(intZeile, 1)) = Format(Now(), "dd.mm.yyyy") Then ReDim Preserve varDatArr(intAnz) varDatArr(intAnz) = Cells(intZeile, 2) intAnz = intAnz + 1 End If Next intZeile MsgBox Join(varDatArr, vbLf) End Sub
weiter hilft.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Herzlichen Dank für die Hilfe und den Code. Dieser funktioniert wunderbar. Ich würde gerne noch zwei Anpassungen vornehmen und zwar folgende:
1. Ich würde der Msg Box gerne einen anderen Titel geben. Wenn diese "aufplopt" ist sie momentan mit "Microsoft Excel" angeschrieben.
2. Ich würde gerne, dass die Ausgabe auch mit Text dargestellt wird zum Beispiel so: "Heute hat " + Wert aus entsprechender Zelle + "aus Zimmer" + Wert aus anderer Zelle + "Geburtstag"
du siehst ja, wie in dem Code a und b verdrahtet sind. Nun nimmst Du einfach noch c dazu, in welcher Zeile auch immer … Musst aber c auch noch deklarieren und mit Inhalt versehen …
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • Primo Centurio
Danke für deine Antwort. Ich habe es zum Teil geschafft aber leider nur zum Teil. Bin es mit deiner Hilfe wie folgt angegangen:
Code:
Dim intZeile As Integer Dim a As String Dim b As String Dim c As Variant Dim d As Variant Dim varDatArr() As Variant Dim intAnz As Integer For intZeile = 3 To 1000
If CDate(Cells(intZeile, 5)) = Format(Now(), "dd.mm.yyyy") Then ReDim Preserve varDatArr(intAnz) varDatArr(intAnz) = Cells(intZeile, 13) c = Cells(intZeile, 3) d = Cells(intZeile, 4) intAnz = intAnz + 1 End If Next intZeile
a = "Heute haben Bewohner aus" b = "folgenden Zimmern Geburtstag: " MsgBox a & vbNewLine & b & vbNewLine & vbNewLine & Join(varDatArr, " " & c & " " & d & " " & vbLf), , "Geburtstage"
End Sub
Bei der MsgBox (siehe Attachment) kommt der zweite Wert nun raus jedoch an der falschen Stelle (bei zimmer 103 anstelle von 103B) und bei 103 sollte auch ein Wert (Name) stehen. Was habe ich nicht beachtet oder wo habe ich den Fehler drin?