Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
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
Wenn heute Geburtstag dann MSG Box
15.07.2016 00:15:07
Benny
Hallo Zusammen,
in einer Datenmaske als Userform habe ich eine Textbox in der das Geburtsdatum der jeweiligen Person steht.
Ich möchte gerne, dass beim Laden der Userform ein Abfrage gemacht wird, wer von den gespeicherten Personen heute Geburtstag hat, diese Meldung soll als MSG Box ausgegeben werden. Beispiel: "Martin Schäfer hat heute Geburtstag"
Geht sowas?
Datenmaske ist angehängt.
Grüße Benny
https://www.herber.de/bbs/user/107022.xls

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn heute Geburtstag dann MSG Box
15.07.2016 02:55:39
fcs
Hallo Benny,
ergänze die nachfolgenden Makros im Userform-Code
Außerdem solltest du ggf. den Geburtstag in der Speichern-Prozedur nicht als Text in der Tabelle eintragen sondern als Excel-Datum.
      If TextBox92.Text = "" Then
.Cells(lzeile, 6).ClearContents
ElseIf IsDate(TextBox92.Text) Then
.Cells(lzeile, 6).Value = CDate(TextBox92.Text)
Else
.Cells(lzeile, 6).Value = TextBox92.Text
End If
Gruß
Franz
Private Sub UserForm_Activate()
Call prcGeburtstag
End Sub
Private Sub prcGeburtstag()
Dim iTag As Integer, iMonat As Integer
Dim iTagGeb As Integer, iMonatGeb As Integer
Dim lngZeile As Long
Dim strMsg As String
iTag = Day(Date)
iMonat = Month(Date)
With Tabelle1
For lngZeile = 2 To .Cells(.Rows.Count, 6).End(xlUp).Row
If IsDate(.Cells(lngZeile, 6).Text) Then
iTagGeb = Day(CDate(.Cells(lngZeile, 6).Text))
iMonatGeb = Month(CDate(.Cells(lngZeile, 6).Text))
If iTag = iTagGeb And iMonat = iMonatGeb Then
strMsg = strMsg & IIf(strMsg = "", "", vbLf) & .Cells(lngZeile, 1).Text _
& " " & .Cells(lngZeile, 2).Text
ElseIf 29 = iTagGeb And 2 = iMonatGeb Then
'Geburtstag am 29. Februar in Nicht-Schaltjahren
If iTag = 1 And iMonat = 3 Then
strMsg = strMsg & IIf(strMsg = "", "", vbLf) & .Cells(lngZeile, 1).Text _
& " " & .Cells(lngZeile, 2).Text
End If
End If
End If
Next
End With
If strMsg = "" Then
'niemand hat Geburtstag
Else
MsgBox "Heute " & IIf(InStr(1, strMsg, vbLf) = 0, "hat", "haben") _
& " Geburtstag" & vbLf & vbLf & strMsg, vbOKOnly, "G E B U R T S T A G"
End If
End Sub

Anzeige
AW: Wenn heute Geburtstag dann MSG Box
15.07.2016 12:40:32
Benny
Hallo Franz,
vielen lieben Dank für Deine Mühe und Hilfe. Ich habe zu den von Dir angegebenen Codes noch eine Frage.
Ich habe jetzt nur mal den unteren Code eingefügt und das funktioniert bereits sehr gut. Wozu benötige ich denn den oberen Code und kannst Du mir sagen, wohin genau ich diesen einfügen soll. Ich gehe davon aus, dass dieser in die "Speichern-Prozedur" eingefügt werden muss aber wohin genau?
Grüße Benny
AW: Wenn heute Geburtstag dann MSG Box
15.07.2016 19:26:52
fcs
Hallo Benny,
der 2. Code-Schnippsel gehört in den Code zur Speichern-Schaltfläche.
Mit dieser Apassung wird Datums-Text der in die Textbox eingegeben wurde. In der Tabelle als Zahl/Datum eingefügt.
Damit funktioniert das Sortieren und Suchen nach Datumswerten einwandfrei.
Wenn du mit dieser Anpassung arbeitest, dann werden die Geburtstage übrigens rechtsbündig in den Zellen dargestellt (= bei Standardzellformat ein Zeichen für einen Zahlenwert/Datum in der Zelle).
Hier noch der Schaltflächen-Code für das Speichern. Die eine Zeile zum Eintragen des Datums wird hier durch das If-Konstrukt ersetzt.
Gruß
Franz
Private Sub CommandButton3_Click()
'Eintrag speichern
Dim lzeile As Long, lIndex As Long
If ListBox1.ListIndex = -1 Then
lzeile = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row + 1
Else
lzeile = ListBox1.Column(1)
End If
lIndex = ListBox1.ListIndex
If Trim(TextBox91.Text) = "" Then
MsgBox "Feld Nachname muss gefüllt sein!", vbCritical + vbOKOnly, "FEHLER!"
'Abbrechen der Speicherroutine
Exit Sub
Else
With Tabelle1
.Cells(lzeile, 1).Value = TextBox4.Text
.Cells(lzeile, 2).Value = Trim(TextBox91.Text)
.Cells(lzeile, 3).Value = TextBox5.Text
.Cells(lzeile, 4).Value = TextBox6.Text
.Cells(lzeile, 5).Value = TextBox7.Text
If TextBox92.Text = "" Then
.Cells(lzeile, 6).ClearContents
ElseIf IsDate(TextBox92.Text) Then
.Cells(lzeile, 6).Value = CDate(TextBox92.Text)
Else
.Cells(lzeile, 6).Value = TextBox92.Text
End If
End With
End If
UserForm_Initialize
If lIndex = -1 Then
ListBox1.ListIndex = ListBox1.ListCount - 1
Else
ListBox1.ListIndex = lIndex
End If
End Sub

Anzeige
AW: Wenn heute Geburtstag dann MSG Box
15.07.2016 23:28:59
Benny
Hallo Franz,
ok das hab ich gecheckt. Vielen herzlichen Dank für Deine Hilfe.
LG Benny

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige