Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Markieren doppelter Zeiträume

Betrifft: Markieren doppelter Zeiträume von: Stefan
Geschrieben am: 31.08.2020 13:50:43

Hallo,

Ich erstelle gerade eine Urlaubsliste aller Mitarbeiter.

Ich habe dazu eine Tabelle erstellt in der ich in Spalte A das Anfangsdatum und in Spalte B das Enddatum des Urlaubs stehen habe.
Spalte C stehen die Namen und in D die Abteilung in der der Mitarbeiter arbeitet.

Nun möchte ich alle doppelten Zeiträume farbig markieren, aber nur wenn die Person in der Selben Abteilung arbeitet.
Wenn sich der Datums bereich überschneidet könnte man die Einträge in einer anderen Farbe markieren markieren lassen.

Eine Beispieldatei hab ich hochgeladen zum besseren Verständnis.
https://www.herber.de/bbs/user/139947.xlsx

Mir wäre eine VBA Lösung am liebsten weil ich das Markieren gerne per command button starten würde.

Gruß
Stefan

Betrifft: AW: Markieren doppelter Zeiträume
von: Sigi
Geschrieben am: 31.08.2020 18:09:27

Hallo Stefan,

ich musste Name und Abteilung tauschen, da auf gleiche Abteilung geprüft werden muss. (s. Mappe)

Sigi

https://www.herber.de/bbs/user/139955.xlsm

Betrifft: AW: Markieren doppelter Zeiträume
von: Stefan
Geschrieben am: 01.09.2020 07:20:37

Hallo Sigi,

danke das funktioniert sehr gut!. Allerdings wird es, da es teilweise bis zu 200 Urlaube sind mit den Farben doch sehr unübersichtlich. Hatte ich mir irgenwie anders vorgestellt.

Die Ausgabe per Msgbox ist aber eine feine Sache.

Wäre es möglich zuerst die Tabelle abzuarbeiten und dann sozusagen als Abschluss eine Auflistung der Überschneidungen in Textform, ggf auch einfach den Übertrag in ein anderes Tabellen Blatt?
Wäre super da man es dann auch ggf ausdrucken könnte.

Den Bereichs von Hand auswählen ist auch nicht schlecht. Ich nutze in der Tabelle auch den autofilter in den überschriften,und sortiere dann nach den verschiedenen Abteilungen.
Könnte man den aktuellen filter als variable "Bereich" nehmen?, dann wären es auch weniger verschiedene Farben.

In der 3. letzten Zeile des Makros hab ich IstTUeb = "#WERT!" in IstTUeb = False abgeändert sonst gab es eine Fehlermeldung, war das korrekt?

Gruß und viele Dank nochmals!

Betrifft: AW: Markieren doppelter Zeiträume
von: Sigi
Geschrieben am: 01.09.2020 11:20:26

Hallo Stefan,

Zitat: "In der 3. letzten Zeile des Makros hab ich IstTUeb = #"WERT!" in IstTUeb = False abgeändert sonst gab es eine Fehlermeldung, war das korrekt?"

Das kannst du machen. Allerdings sind dann irgendwo die Eingangsdaten unplausibel. Bsp.: Text statt Datum?, Beginn größer Ende?

Zitat: "Allerdings wird es, da es teilweise bis zu 200 Urlaube sind mit den Farben doch sehr unübersichtlich. Hatte ich mir irgendwie anders vorgestellt."

Das war dein Wunsch. Ich hatte deshalb Zufallsfarben gewählt, da ja unbekannt war/ist wie viele Überschneidungen und unterschiedliche Farben gebraucht werden. Dass dies unübersichtlich wird, war mir gleich klar. Es kann ja auch mehrfache Überschneidungen innerhalb einer Abteilung geben, dann werden die Farben mehrmals überschrieben/überfärbt.

Alternativ kann ich dir anbieten, die Überschneidungen (auch Mehrfachüberschneidungen) in einer 5. Spalte zu nummerieren, dann kannst du anhand der Nr. die jeweiligen Überschneidungen auswerten. Das wäre mit geringen Mehraufwand zu erreichen.

Filtern sollte kein Problem sein. Dadurch wird ja auch die Datenmenge geringer.

Sigi

Betrifft: AW: Markieren doppelter Zeiträume
von: Stefan
Geschrieben am: 02.09.2020 07:29:31

Hallo Sigi,

Das mit der Nummerierung hört sich gut an, wenn möglich in spalte "H".
Was auch noch schön wäre, wenn Spalte A und F noch mit eingefärbt werden würden.

IstTUeb = "#WERT!" hab ich nochmals zurückgeändert. Dann läuft es aber nicht durch. Kann es sein das es daran liegt das Beginn und Ende das selbe Datum haben. Das ist immer dann der Fall wenn der Mitarbeiter nur 1 Tag Urlaub hat?

Gruß
Stefan

Betrifft: AW: Markieren doppelter Zeiträume
von: Sigi
Geschrieben am: 02.09.2020 15:06:26

Hallo Stefan,

ich habe nun die Variante mit der Nummerierung eingebaut (Farben werden weiterhin gesetzt).
Die Sache mit dem 1-tägigen Urlaub habe ich korrigiert. (War so, wie du angegeben hast.)
Bei unplausiblen Daten sollte jetzt nur noch eine MsgBox mit Fehlermeldung aufgehen.
(s. Mappe)

Sigi

https://www.herber.de/bbs/user/139995.xlsm

Betrifft: AW: Markieren doppelter Zeiträume
von: Stefan
Geschrieben am: 03.09.2020 09:21:37

Hallo Sigi,

Die Nummerierung ist super!. So kann mann auch einfacher nach verfolgen welcher Urlaub mit welchem kollidiert, echt klasse!. Ich hab noch folgendes ergänzt und den Bereich als Tabelle formatiert.

'Farben und Nummerierung löschen
Range("Tabelle1").Interior.Color = xlNone
Set Bereich = Range("Tabelle1")
Range("F3", Cells(Rows.Count, 6).End(xlUp)).ClearContents
Range("A3:F5", Cells(Rows.Count, 2).End(xlUp)).SpecialCells(xlCellTypeVisible).Select

Funktioniert einwandfrei, vielen Dank für alles.

Gruß
Stefan

Betrifft: AW: Markieren doppelter Zeiträume
von: Sigi
Geschrieben am: 03.09.2020 11:12:46

Hallo Stefan,

da ja mit der Markierung gearbeitet wird, würde ich auch beim Zurücksetzen über diese Markierung arbeiten. Die Markierung ist ja unabhängig von der Position innerhalb der Tabelle. Auch Teilmarkierungen sind so möglich.
Sub UrlaubsUeberschneidungZurücksetzen()
Dim Bereich As Range, s As Long
        Set Bereich = Application.Selection
        s = Bereich.Columns.Count
        Bereich.Interior.Color = xlNone
        Bereich.Columns(s).ClearContents
        Set Bereich = Nothing
End Sub
Sigi

Betrifft: AW: Markieren doppelter Zeiträume
von: Stefan
Geschrieben am: 08.09.2020 16:06:41

Hallo Sigi,

Du hast recht so ist es besser. :-)

Gruß
Stefan

Beiträge aus dem Excel-Forum zum Thema "Markieren doppelter Zeiträume "