Clever-Excel-Forum

Normale Version: Geburtstag über Msg Box anzeigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo miteinander

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

Herzlichen Dank für eure Hilfe.

Freundliche Grüsse

Primo
Hallo Primo,

verscihebe die MsgBox unter Next.

Gruß Uwe
Hallo Uwe

Danke für die rasche Antwort.
Das habe ich auch schon versucht, leider erscheint dann auch die Msg Box aber nur mit dem vorgegebenen Text "Heute hat,"

Muss ich evt den Code so ändern, dass er den Befehl abbricht wenn das Datum nicht gleich Heute ist?

Grüsse Primo
Hallo,

sieh mal, ob dir das:

Code:
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.
Hallo Klaus-Dieter

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"

Herzlichen Dank für deine Hilfe.

Freundliche Grüsse

Primo
Moin,

zu 1.: https://www.google.com/search?client=firefox-b-d&q=msgbox+titel+%C3%A4ndern
Moin Günter


Danke für den Link zu Google  :21: :71:
Habe es nun nach 100 versuchen hingekriegt den Titel zu ändern.

Gruss Primo
Habe ein wenig herumprobiert und es eigentlich hingekriegt.

Der Code lautet nun wie folgt:
Code:
Dim intZeile As Integer
Dim a As String
Dim b As String
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)
          intAnz = intAnz + 1
   End If

  Next intZeile
 
   a = "Heute haben Bewohner aus"
   b = "folgenden Zimmern Geburtstag: "

  MsgBox a & vbNewLine & b & vbNewLine & vbNewLine & Join(varDatArr, vbLf), , "Geburtstage"

End Sub

Nun bleibt nur noch die Frage wie ich einen zweiten Wert, wie ich einen zweiten Wert auf der gleichen Zeile in die MsgBox einfügen kann.


Freundliche Grüsse

Primo
Hallöchen,

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 …
Hallo André

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?

Lg Primo
Seiten: 1 2