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

Messagebox bei bestimmten Datum

Messagebox bei bestimmten Datum
10.02.2016 17:41:55
Patrick
Hallo ihr Profis!
Habe mal eine Frage und hoffe die bereitet mir nicht so viele Schwierigkeiten.
Habe eine Arbeitsmappe in der Mitarbeiter auf jeweils ein Tabellenblatt eingetragen werden. Die Daten stehen immer auf der selben Stelle!
Pro Tabellenblatt gibt es 3 Datum für: Geburtstag, Ablauf Führerschein und Ablauf Fahrerkarte
Gibt es eine Möglichkeit, dass wenn das Geburtsdatum erreicht ist, eine MessageBox auf geht in der drin steht das dieser Mitarbeiter heute Geburtstag hat.
Das selbe wäre auch interessant für die beiden anderen Datum. Wobei da nicht am selben Tag sondern 30 Tage davor.
Danke im Voraus
Mfg
Patrick

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Messagebox bei bestimmten Datum
10.02.2016 22:56:30
Beverly
Hi Patrick,
vielleicht eine Möglichkeit:
Private Sub Workbook_Open()
Dim wksTab As Worksheet
Dim strGeburtstag As String
Dim strFS As String
Dim strKarte As String
For Each wksTab In Worksheets
' Geburtstga in A1
If wksTab.Range("A1")  "" Then
If Day(wksTab.Range("A1")) = Day(Date) And Month(wksTab.Range("A1")) = Month(Date)  _
Then _
strGeburtstag = strGeburtstag & vbLf & wksTab.Name
End If
' Führerscheindatum in A2
If wksTab.Range("A2")  "" Then
If Date + 30 >= wksTab.Range("A2") Then strFS = strFS & vbLf & wksTab.Name
End If
' Fahrerkartendatum in A3
If wksTab.Range("A3")  "" Then
If Date + 30 >= wksTab.Range("A3") Then strKarte = strKarte & vbLf & wksTab.Name
End If
Next wksTab
If strGeburtstag  "" Then
MsgBox "Heute haben Geburtstag:" & vbLf & strGeburtstag
Else
MsgBox "Heute hat niemand Geburtstag"
End If
If strFS  "" Then MsgBox "Führerschein abgelaufen:" & vbLf & strFS
If strKarte  "" Then MsgBox "Fahrerkarte abgelaufen:" & vbLf & strKarte
End Sub

Der Code gehört ins Codemodul DieseArbeitsmappe und wird automatisch beim Öffnen ausgeführt.
Da ich nicht weiß, wie deine Tabellen aufgebaut sind, bin ich davon ausgegangen, dass Geburtsdatum in A1, Führerscheindatum in A2, Fahrerkartendatum in A3 stehen und der Name des Mitarbeiters dem Tabellennamen entspricht - musst du alles entsprechend anpassen.


Anzeige
AW: Messagebox bei bestimmten Datum
11.02.2016 12:59:02
Patrick
Hallo!
Besten Danke für die Hilfe!
Es kommt leider die Fehlermeldung "Typen unverträglich"
Ich lade mal eine Beispieldatei hoch, wie meine Datei aussieht!
https://www.herber.de/bbs/user/103462.zip
Lg Patrick

AW: Messagebox bei bestimmten Datum
11.02.2016 16:51:00
Beverly
Hi Patrick,
an welcher Stelle kommt denn ein Fehler? In deiner Mappe "Beispiel.xlsm" gibt es den von mir geposteten Code überhaupt nicht - wie soll er da einen Fehler auslösen?
Wozu überhaupt eine Zip-Datei mit einem Haufen Unterordner? So groß ist die Mappe doch gar nicht.


Anzeige
AW: Messagebox bei bestimmten Datum
11.02.2016 18:44:54
Patrick
Hallo!
Ja sorry...irgendwie war das wohl die falsche Datei! Hier die richtige
Das lustige, beim Beispiel funktionierts jedoch erst dann, wenn die Userform geschlossen wird.
Sobald ich bei der Originaldatei die Userform schließe, kommt die Fehlermeldung
lg
https://www.herber.de/bbs/user/103476.xlsm

AW: Messagebox bei bestimmten Datum
11.02.2016 20:04:36
Beverly
Hi,
1. solltest du keine Mappen hochladen, bei denen du ein Application.Quit (und Application.Visible = False) drin hast - zumindest solltest du es auskommentieren, damit man die Mappe nicht nochmal herunterladen und erst ohne aktivierte Makros speichern muss um das anschließend selbst zu machen
2. die Codezeile Start.Show solltest du ans Ende des Workbook_Open-Ereignisses setzen, denn sonst wird der Codeteil zum Zählen der Geburtstage erst ausgeführt, nachdem das UserForm wieder geschlossen wird
3. weiß ich immer noch nicht, an welcher Stelle im Code die Fehlermelsung kommt und nachvollzeihen kann ich es logischerweise nicht, da in der hochgeladenen Mappe kein Fehler auftritt. Ich kann also nur raten: in einer der Tabellen steht in einer der Zellen, die auf ein Datum geprüft werden, ein Text, der bekanntlich nicht als Datum interpretiert werden kann - folglich genannter Laufzeitfehler. Falls das so ist, achte darauf, dass in den allen Tabellen in den geprüften Zellen jeweils ein Datum steht oder ändere den Code dahingehend, dass du prüfst, ob ein Datum drin steht - nach diesem Prinzip: If IsDate(wksTab.Range("A4"))
Eventuell musst du die tabelle "Vorlage" noch aus der Prüfung überhaupt ausschließen - das hängt aber davon ab, ob dort in einer der relevanten 3 Zellen etwas steht.


Anzeige
AW: Messagebox bei bestimmten Datum
11.02.2016 20:23:02
Patrick
okay...danke für die info! ich werde es für die nächsten male beachten.
Wie geschrieben, dass ist nur eine Beispieldatei.
Aber danke für den Tipp.
In der Originaldatei habe ich 2 Blätter ("Vorlage" und "Info") die kein Datum drin stehen haben.
Wie kann ich diese 2 Blätter aus der Prüfung ausschließen?
Lg und sorry für meine Inkompetenz :D

AW: Messagebox bei bestimmten Datum
11.02.2016 20:38:26
Patrick
Nochmal Ich!
also ich habs hinbekommen! Funktioniert jetzt tatsächlich :) Danke nochmal
aber jetzt noch eine Frage!
Ist es möglich, dass die msgbox sich über die Userform öffnet. Also sozusagen gleichzeitig?ß
Lg Patrick

Anzeige
AW: Messagebox bei bestimmten Datum
11.02.2016 21:00:11
Patrick
und heute das letzte mal ich!!
Geburtsdatum funktioniert ohne Probleme
Bei der Karte und Führerschein gibts da probleme!
Ich weiß aber ehrlich gesagt nicht welches. Die Zellen sind fürs Datum formatiert.
Bei der Eingabe direkt am Tabellenblatt, wird das Datum dann rechtsbündig angezeigt. Dann funktioniert auch die Abfrage mit der MsgBox.
Bei Eingabe über die Userform "Erstellen" wird das Datum dann linksbündig angezeigt. Ist aber auch als Datum formatiert.
Ich verstehe es ehrlich gesagt über haupt nicht

AW: Messagebox bei bestimmten Datum
11.02.2016 21:13:31
Beverly
Wenn du das Datum aus einer TextBox nimmst, überträgst du auch Text in die Tabelle - mache es stattdessen nach diesem Prinzip:
Range("A14") = CDate(TextBox)
Range("A14").NumberFormat = "dd.mm.yyyy"


Anzeige
AW: Messagebox bei bestimmten Datum
11.02.2016 23:12:32
Patrick
Hallo!
Besten Dank für die Hilfe!
Das mit der Schleife und so funktioniert!
Das mit dem Datum kapier ich irgendwie gar nicht!
Lg Patrick

AW: Messagebox bei bestimmten Datum
11.02.2016 23:13:54
Patrick
Auch wenn ich den Code bei der Userform eingebe, kommts aufs selbe!
Zuerst kommen die MsgBoxen und dann erst öffnet sich die Userform sobald ich die MsgBox bestätigt habe!

AW: Messagebox bei bestimmten Datum
12.02.2016 09:09:46
Beverly
Da hatte ich dich falsch verstanden. Schreibe den Code ins Activate-Ereignis des UserForms.
Was verstehst du nicht mit dem Datum?


AW: Messagebox bei bestimmten Datum
12.02.2016 10:46:30
Patrick
Hallo!
Perfekt...jetzt ist es so, wie ich mir das vorstelle! Danke dir vielmals!!
Wie ich das Datum so "umwandel", damit es für die MsgBox nutzbar sind!
Das versteh ich irgendwie nicht!!

Anzeige
AW: Messagebox bei bestimmten Datum
12.02.2016 11:17:42
Patrick
So!
Ich hab es endlich geschafft, dass das Datum richtig eingefügt wird.
Leider kommt dennoch eine Fehlermeldung (wieder mal XD)
Laufzeitfehler 13
Typen unverträglich!
Option Explicit
Private Sub ButtonAnlegen_Click()
If TextBoxDienstnummer = "" Then
MsgBox "                         Bitte  Dienstnummer  eintragen                      "
Exit Sub
End If
If TextBoxVorname = "" Then
MsgBox "                         Bitte  Vorname  eintragen                      "
Exit Sub
End If
If TextBoxNachname = "" Then
MsgBox "                         Bitte  Nachname  eintragen                      "
Exit Sub
End If
Dim wksTab As Worksheet
Dim blnVorhanden As Boolean
Dim NeuerTabellenName As String
'... Code für die TextBoxen
NeuerTabellenName = Sheets("Vorlage").Range("A1").Value
For Each wksTab In Worksheets
If wksTab.Name = NeuerTabellenName Then
blnVorhanden = True
Exit For
End If
Next wksTab
If blnVorhanden Then
MsgBox NeuerTabellenName & " wurde schon erstellt!  "
Unload Me
Else
ActiveWorkbook.Sheets("Vorlage").Copy _
after:=Worksheets(Worksheets.Count)
Sheets(Sheets.Count).Name = NeuerTabellenName
End If
'... Code für die TextBoxen
TextBoxDienstnummer = ""
TextBoxVorname = ""
TextBoxNachname = ""
TextBoxGeburtsdatum = ""
TextBoxHandynummer = ""
TextBoxFestnetznummer = ""
TextBoxEmailadresse = ""
ComboBoxFreieTage = ""
ComboBoxGruppe = ""
TextBoxFunktion = ""
TextBoxEintritt = ""
TextBoxFührerschein = ""
TextBoxFahrerkarte = ""
TextBoxTransponder = ""
TextBoxKennzeichenMS = ""
TextBoxKennzeichenES = ""
ActiveWorkbook.Sheets("Vorlage").Range("A10") = ""
Call Bilder_löschen
Call Datumformat
Unload MitarbeiterErstellen
End Sub
Private Sub ButtonBildeinfügen_Click()
Call VBAProject.BilderEinfügenErstellen.Test
End Sub
Private Sub ButtonLöschen_Click()
TextBoxDienstnummer = ""
TextBoxVorname = ""
TextBoxNachname = ""
TextBoxGeburtsdatum = ""
TextBoxHandynummer = ""
TextBoxFestnetznummer = ""
TextBoxEmailadresse = ""
ComboBoxFreieTage = ""
ComboBoxGruppe = ""
TextBoxFunktion = ""
TextBoxEintritt = ""
TextBoxFührerschein = ""
TextBoxFahrerkarte = ""
TextBoxTransponder = ""
TextBoxKennzeichenMS = ""
TextBoxKennzeichenES = ""
Sheets("Vorlage").Range("A10") = ""
Unload MitarbeiterErstellen
End Sub
Private Sub ComboBoxFreieTage_Change()
Sheets("Vorlage").Range("A8") = ComboBoxFreieTage
End Sub
Private Sub ComboBoxGruppe_Change()
Select Case ComboBoxGruppe.Value
Case "Gruppe 1 + Linien": ZusatzGruppe2.Show
Case "Gruppe 2 + Linien": ZusatzGruppe1.Show
End Select
Sheets("Vorlage").Range("A9") = ComboBoxGruppe
End Sub
Private Sub TextBoxDienstnummer_Change()
Sheets("Vorlage").Range("A1") = TextBoxDienstnummer
End Sub
Private Sub TextBoxEintritt_Change()
Sheets("Vorlage").Range("A13") = TextBoxEintritt
End Sub
Private Sub TextboxFahrerkarte_Change()
Worksheets(2).Cells(15, 1).Value = CDate(TextBoxFahrerkarte.text)
Worksheets(2).Cells(15, 1).NumberFormat = "DD/MM/YYYY"
End Sub
Private Sub TextBoxFührerschein_Change()
Sheets("Vorlage").Range("A14") = TextBoxFührerschein
End Sub
Private Sub TextBoxFunktion_Change()
Sheets("Vorlage").Range("A11") = TextBoxFunktion
End Sub
Private Sub TextBoxGeburtsdatum_Change()
Sheets("Vorlage").Range("A4") = TextBoxGeburtsdatum
End Sub
Private Sub TextBoxHandynummer_Change()
Sheets("Vorlage").Range("A5") = TextBoxHandynummer
End Sub
Private Sub TextBoxKennzeichenES_Change()
Sheets("Vorlage").Range("A17") = TextBoxKennzeichenES
End Sub
Private Sub TextBoxKennzeichenMS_Change()
Sheets("Vorlage").Range("A16") = TextBoxKennzeichenMS
End Sub
Private Sub TextBoxEmailadresse_Change()
Sheets("Vorlage").Range("A7") = TextBoxEmailadresse
End Sub
Private Sub TextBoxNachname_Change()
Sheets("Vorlage").Range("A3") = TextBoxNachname
End Sub
Private Sub TextBoxFestnetznummer_Change()
Sheets("Vorlage").Range("A6") = TextBoxFestnetznummer
End Sub
Private Sub TextBoxTransponder_Change()
Sheets("Vorlage").Range("A12") = TextBoxTransponder
End Sub
Private Sub TextBoxVorname_Change()
Sheets("Vorlage").Range("A2") = TextBoxVorname
End Sub
Es geht um die TextBoxFahrerkarte!
Sobald ich auf "Erstellen" klicke, tut er eigentlich das, was er tun sollte. Jedoch kommt diese Meldung
Lg

Anzeige
AW: Messagebox bei bestimmten Datum
13.02.2016 08:31:57
Beverly
1. an welcher Stelle im Code kommt die Fehlermeldung?
2. lade deine derzeitige Mappe (mit den relevanten Inhalten) hoch


AW: Messagebox bei bestimmten Datum
13.02.2016 11:25:37
Patrick
Hallo!
Also wieder anhand der Beispiel Datei.
https://www.herber.de/bbs/user/103519.xlsm
Wenn man einen Mitarbeiter erstellt, kann ich das Datum in die Textbox Fahrerkarte eingeben. Jedoch nur DD/MM/YY.
Sobald man die Jahreszahl 4 stellig eingibt kommt eine Fehlermeldung.
Wenn man die Jahreszahl 2 stellig eingibt und dann auf Mitarbeiter erstellen geht, macht er das was er machen soll. also die Vorlage kopieren aber es kommt eben die Fehlermeldung.
Lg Patrick

Anzeige
AW: Messagebox bei bestimmten Datum
13.02.2016 12:31:16
Beverly
Hi Patrick,
benutze nicht das Change-Ereignis der TextBox sondern das AfterUpdate-Ereignis. Prüfe außerdem, ob der TextBox-Inhalt tatsächlich ein Datum ist:
Private Sub TextBoxFahrerkarte_AfterUpdate()
If IsDate(TextBoxFahrerkarte.Text) Then
Worksheets("Vorlage").Cells(15, 1).Value = CDate(TextBoxFahrerkarte.Text)
Worksheets("Vorlage").Cells(15, 1).NumberFormat = "DD/MM/YYYY"
Else
MsgBox "Bitte ein korrektes Dateum eingeben"
End If
End Sub


AW: Messagebox bei bestimmten Datum
13.02.2016 12:45:44
Patrick
Vielen Danke
Jetzt funktionierts so wie es sein soll! Danke dir vielmals für deine Geduld und deine Mühe!

Anzeige
AW: Messagebox bei bestimmten Datum
11.02.2016 21:10:49
Beverly
Hi Patrick,
zur Frage Ausschluss bestimmer Tabellen (vorhergehender Beitrag) - mache innerhalb der Schleife eine Abfrage nach dem Tabellennamen:
    For Each wksTab In Worksheets
If wksTab.Name  "Vorlage" And wksTab.Name  "Info" Then
' Geburtstga in A1
If wksTab.Range("A1")  "" Then
If Day(wksTab.Range("A1")) = Day(Date) And _
Month(wksTab.Range("A1")) = Month(Date) Then _
strGeburtstag = strGeburtstag & vbLf & wksTab.Name
End If
' Führerscheindatum in A2
If wksTab.Range("A2")  "" Then
If Date + 30 >= wksTab.Range("A2") Then strFS = strFS & vbLf & wksTab.Name
End If
' Fahrerkartendatum in A3
If wksTab.Range("A3")  "" Then
If Date + 30 >= wksTab.Range("A3") Then strKarte = strKarte & vbLf & wksTab. _
Name
End If
End If
Next wksTab

Zur Frage in diesem Beitrag: starte das UserForm ganz normal über das Workbook_Open-Ereignis und schreibe den gesamten Code für die MsgBox-Anzeige in das Initialize-Ereignis des UserForms.


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige