Microsoft Excel

Herbers Excel/VBA-Archiv

Terminplaner anpassen, aber wie?


Betrifft: Terminplaner anpassen, aber wie? von: Juergen Bohl
Geschrieben am: 13.04.2018 09:47:13

Hallo zusammen,

ich habe einen tollen Terminplaner, welcher aber nun leider wegen Beliebtheit anfängt seinen Grenzen zu erreichen.

Derzeit werden die diversen Termine für Mitarbeiter als Liste in das Tabellenblatt "Terminplaner" eingetragen:
Spalte A: Personalnummer (Name wird ergänzt aus Tabelle "Personal"
Spalte C: Beginn Datum
Spalte D: Art (Vorschlag aus bedingter Formatierung)
Spalte E: Ende Datum
Daraus resultieren dann die Kästchen-Markierungen in der Übersicht. Soweit, so gut.

Mein Problem:
Eine steigende Zahl an Mitarbeitern und Terminen während des Jahres verursacht nun das anwachsen der Liste an Terminen in Sheet "Tabellenblatt".
Frage:
könnte man entgegen dass wie jetzt die Datums-Daten im "Tabellenblatt" eingetragen werden, dies beim Mitarbeiter im "Personal" Sheet erledigt werden.
Der "Terminplaner" fungiert dann lediglich als Anzeige für EINMAL des Namens des Mitarbeiters und fortlaufend dafür die Kästchen-Markierungen?
Das würde im "Tabellenblatt die Liste der Mitarbeiter auf nur einmal je Mitarbeiter begrenzen und man kann das ganze Jahr hindurch schreiben.

Meine begrenzten Kenntnisse lassen keine Einfall zu, wie das anzupacken wäre? formelgestützt oder VBA Code?

Hätte dazu jemand einen Ansatz?
Hier mein Beispiel:
https://www.herber.de/bbs/user/121032.xlsm

Danke & Gruss,
Juergen

  

Betrifft: AW: Terminplaner anpassen, aber wie? von: Firmus
Geschrieben am: 15.04.2018 00:00:41

Hi Jürgen,

es ist ja schön, dass der Planer so gut akzeptiert wird.

Dein Plan:
Pro MA nur noch eine Zeile im Planer zu haben, bedeutet automatisch den Verlust
von Details, z.B. Rene hat Notdienst und Urlaub in zwei Zeilen - was jetzt?

schau Dir mal der Ergebnis an. Es sieht ziemlich anders aus, aber funktioniert IMHO.
https://www.herber.de/bbs/user/121043.xlsm

Es gibt eine Terminliste, ähnlich wie der bisherige Plan.
Es gibt eine Terminplan, mit einer Zeile pro Mitarbeiter.
- Notdienst/Urlaub/.... sind beim jeweiligen Mitarbeiter genau an diesem Tag als Kürzel eingetragen.

Fragen?
Formuliere Sie bitte detailliert, ich werde in den nächsten Tagen mal ins Forum schauen.

Gruß,
Firmus


  

Betrifft: AW: Terminplaner anpassen, aber wie? von: Jürgen
Geschrieben am: 15.04.2018 22:06:33

Hallo Firmus,

deine Lösung ist genau die ich mir vorstellte! Super, sogar an Funktionalität noch eines drauf gesetzt. Besten Dank für deine Mühe!

Aber als VBA DAU gibts natürlich FRagen dazu:

a) könnte man die Fehlermeldung nach betätigen des Einlese-Makros abfangen? Es handelt sich offensichtlich nur um das Ende der Tabelle?


b) wie bringe ich in "TerminListe" die neuen Einträge in Spalte D ebenfalls mit einem PullDown Menü zu versehen?


c) ich bringe meinen PNR Filter auf "Terminplaner" nicht mehr zum laufen. Wobei das eh ein Makro-Recorder Ding war. Könnte man nur durch Eingabe der PNr in das Feld "A4" und ENTER die Filterung schon auslösen? Bei rauslöschen der PNR dann wieder alle Datensätze (Namen) anzeigen lassen?


Danke & GRuss,
Juergen




  

Betrifft: AW: Terminplaner anpassen, aber wie? von: firmus
Geschrieben am: 16.04.2018 08:06:45

Hallo Jürgen,
kann ich mir CA heute Abend ansehen.
Alle diese Dinge sind machbar, wir müssen "nur" bei den gleichen Worten das gleiche "Bild sehen".

Mal gucken ob es auf Anhieb klappt.

Gruß,
Firmus


  

Betrifft: AW: Terminplaner anpassen, aber wie? von: Jürgen
Geschrieben am: 16.04.2018 19:45:08

Hallo Firmus,

vielen Dank dass du dir der Sache annimmst!
Ich freu mich auf deine Antwort!

Danke & Gruss,
Juergen


  

Betrifft: AW: Terminplaner anpassen, aber wie? von: Firmus
Geschrieben am: 16.04.2018 21:47:24

Hi Juergen,

zu a)
Die Meldung könnte man entfernen, aber sie weisst auf einen Datenfehler in der Liste hin.

Konkret war hier eine Zelle nach der zeile 44(letzte Buchung) nicht leer.
(leere Zelle und Zelle mit Leerzeichen (nichts zu sehen) sind nicht identisch, das könnte die Ursache gewesen sein.)
Ich habe Zeile 45 - bis Blattende alles gelöscht, jetzt funktioniert es richtig.

Zusatz:
im Blatt "Terminliste": Doppelklick auf
1) PersNr: sortiert nach PersNR und Beginndatum
2) Name: sortiert nach Name und Beginndatum
3) Grund: sortiert nach Grund und PersNR

Das ist derzeit fix auf maximal 999 Einträge gesetzt.


zu b)
1. Ich habe bis Zeile 44 die Spalte D mit Dropdown versehen.
2. Ich habe bis Zeile 44 auch die Bedingte Formatierung erweitert.
(siehe auch Blatt Codierung, habe dorthin die Bedingte Formatierung kopiert.)

Bei Bedarf von weiteren Buchungszeilen einfach die letzte genutzte Zeile (hier 44) nach unten kopieren.
Dropdown und Bedingte Formatierung werden automatisch mitkopiert. Bis Zeile 999 funktioniert das inclusive sortieren.

zu c)
Ich habe Deine erste xlsm nochmals downloaded, da ist kein Makro PersFilter und kein Makro DeleteFilter enthalten.
Ich habe ein Makro hinterlegt, dass auf die Eingabe in Zelle A4 regiert.
1. A4 = leer: zeigt alle PersNr an
2. A4 = PersNR: Filter auf diese PersNr wird gesetzt
3. A4 = falsche Wert: zeigt alle PersNr an, und zeigt ein Fehlermeldung "....keine gültige PersNr..."

Hier die geänderte Datei: https://www.herber.de/bbs/user/121078.xlsm

Probiere es einfach mal aus und lass wissen ob es passt.

Gruß,
Firmus

PS: hat Spaß gemacht.


  

Betrifft: AW: Terminplaner passt fast :) von: Juergen Bohl
Geschrieben am: 17.04.2018 09:45:56

Hallo Firmus,

vielen Dank für deine Hilfe. Ich habe jetzt alles soweit bei mir implementiert.

Meine aktuelle Beispieldatei hier:
https://www.herber.de/bbs/user/121089.xlsm

Was noch bleibt ist nach wie vor die Meldung bei Ende des Import-Vorganges. Auch ich versuchte alles zu löschen um alles zu bereinigen.

Doch scheint es mir dennoch so, dass einfach das Script die fehlende Formatierung in der ersten LETZTEN Zeile im Tabellenblatt "TerminListe" als Fehler interpretiert. Könnte man dies abfangen und gegebf. mit der Meldung ersetzen "Import fertig"? btw: ich habe den Import-Button auf das "Terminplaner" Sheet gelegt.

Hier dazu die Screenshots:






Danke & Gruss,
Juergen


  

Betrifft: AW: Terminplaner passt fast :) offen von: Juergen Bohl
Geschrieben am: 17.04.2018 09:47:26

Kontrollkästchen vergessen zu setzen, sorry


  

Betrifft: AW: Terminplaner passt fast :) offen von: Firmus
Geschrieben am: 17.04.2018 23:00:29

Hi Jürgen,

1) hattest Du meinen letzten Upload benutzt?

In Blatt 'TERMINLISTE' sind 4 Makros enthalten:
1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
2.Sub Sort_by_PersNR_und_Beginn(Target As Range)
3.Sub Sort_by_Name_und_Beginn(Target As Range)
4.Sub Sort_by_Grund_und_PersNR(Target As Range)

Mit Doppelklick auf "PersNr", "Name" oder "Grund" in Zeile 1 wird die Liste entsprechend sortiert.

2) Makros "PersNR filtern" und "Filter löschen"
Beide Makros habe ich in "ALL_Moduls" verschoben.
(Es ist eher verwirrend, wenn Makros, die NICHT auf einen Event reagieren sollen, in Tabellenblätter abgelegt werden.)
Beide Makros funktionieren über die beiden Knöpfe.


3) Meldung "Import fertig"
Habe ich eingefügt, die Fehlermeldung kommt nur noch bei wirklichen Datenfehlern.

Ursache meines Fehlers:
Ich habe zum Durchzählen für die Schleife "ActiveSheet.UsedRange.Rows.Count" verwendet.
Damit zählt er nur die "used" Zellen, also die mit Inhalt.
Haken: Zellen, auf denen Bedingte Formatierung hinterlegt ist, sind auch "used" Zellen, selbst wenn kein Wert drin ist.
Konkret: Die Bedingte Formatierung reicht bis Zeile 564.
Fehler behoben.

Hier sind alle Korrekturen enthalten: https://www.herber.de/bbs/user/121109.xlsm

Lass wissen, ob alles passt.

Gruß,
Firmus

ps: In den nächsten Tagen bin ich etwas weniger im Forum - Sonne, Sonne, Sonne. ;-)


  

Betrifft: AW: Terminplaner passt fast :) offen von: Firmus
Geschrieben am: 17.04.2018 23:00:44

Hi Jürgen,

1) hattest Du meinen letzten Upload benutzt?

In Blatt 'TERMINLISTE' sind 4 Makros enthalten:
1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
2.Sub Sort_by_PersNR_und_Beginn(Target As Range)
3.Sub Sort_by_Name_und_Beginn(Target As Range)
4.Sub Sort_by_Grund_und_PersNR(Target As Range)

Mit Doppelklick auf "PersNr", "Name" oder "Grund" in Zeile 1 wird die Liste entsprechend sortiert.

2) Makros "PersNR filtern" und "Filter löschen"
Beide Makros habe ich in "ALL_Moduls" verschoben.
(Es ist eher verwirrend, wenn Makros, die NICHT auf einen Event reagieren sollen, in Tabellenblätter abgelegt werden.)
Beide Makros funktionieren über die beiden Knöpfe.


3) Meldung "Import fertig"
Habe ich eingefügt, die Fehlermeldung kommt nur noch bei wirklichen Datenfehlern.

Ursache meines Fehlers:
Ich habe zum Durchzählen für die Schleife "ActiveSheet.UsedRange.Rows.Count" verwendet.
Damit zählt er nur die "used" Zellen, also die mit Inhalt.
Haken: Zellen, auf denen Bedingte Formatierung hinterlegt ist, sind auch "used" Zellen, selbst wenn kein Wert drin ist.
Konkret: Die Bedingte Formatierung reicht bis Zeile 564.
Fehler behoben.

Hier sind alle Korrekturen enthalten: https://www.herber.de/bbs/user/121109.xlsm

Lass wissen, ob alles passt.

Gruß,
Firmus

ps: In den nächsten Tagen bin ich etwas weniger im Forum - Sonne, Sonne, Sonne. ;-)


  

Betrifft: AW: Terminplaner passt fast :) offen von: Juergen Bohl
Geschrieben am: 18.04.2018 08:01:33

Halo Firmus,

vielen herzlichen Dank für deine Mühe.
Natürlich habe ich deine Antwort gelesen und umgesetzt, soweit wie möglich.

Da das Sheet für die Terminplanung innerhalb eines größeren Projektes eingebettet ist, muss ich die Anpassungen immer händisch umsetzen. Umgekehrt dagegen, wenn ich eine Beispieldatei für das Forum hier bereitstelle, muss ich das wiederum aufwendig rauslösen und verschlanken. Sonst geht das schon mal nicht wegen den 300kb Begrenzung und weiterhin wegen Datenschutz.

kann st du mir den Punkt 3) im Script genau benennen, wo ich die Änderungen durchführen muss, damit das so läuft wie in deiner Beispieldatei? Das wäre für mich wesentlich einfacher, als das ganze wieder in Gänze zu implementieren.

btw: ich habe eine zweite Frage aus generiert und meine Fragen übersichtlich zu halten.
Hättest du dazu auch eine Idee?
https://www.herber.de/forum/messages/1620159.html

Danke & Gruss,
Juergen


  

Betrifft: AW: Terminplaner passt fast :) offen von: Firmus
Geschrieben am: 18.04.2018 09:55:51

Hi Jürgen,

kannst Du aus meinem XLSM aus 'All_Moduls' die 'Sub TerminPlaner_fuellen()' in Dein XLSM kopieren?
Das ist ja eine isolierte Aufgabe, m. E. sollte das klappen.
Dann ist die Korrektur zu 3. fehlerfrei drin.
Auf Befehlsebene zu kopieren ist der Garant für neue Fehler.
Lass wissen.

Zu den neu entdeckten Situationen(anderer Thread): Werde ich mir heute Abend ansehen.
Spräche etwas dagegen anstelle von Bedingter Formatierung, die Farben im Makro zu belegen?
Es wird ja jedes Mal der komplette Inhalt gelöscht, und neu eingestellt. Da könnte die Farbe
auch noch 'mitlaufen'.
Und, die Fehlerwahrscheinlichkeit, wenn die Datenmenge wächst, würde sich auch reduzieren,
da Zellen in der Makroschleife und Zellen mit Bedingter Formatierung nicht mehr abweichen könnten -
- auch nicht im Laufe der Zeit.

Hänge doch auch in den anderen Thread einen Querverweis - sonst will eine/r arbeiten und kennt nur einen Ausschnitt der Sachlage. Nicht zwingend, aber höflich im Sinne des Forums.

Gruß,
Firmus


  

Betrifft: AW: Terminplaner passt fast :) offen von: Juergen Bohl
Geschrieben am: 18.04.2018 12:08:33

Hallo Firmus,

vielen Dank für die schnelle Antwort!
Das umkopieren hat geklappt. Jedoch habe ich nach dem Praxis-Einsatz es wieder zurückgenommen.
Grund: es kommt nach dem Ende des Imports 1a den erfolgreichen Status, doch scheint das Makro nun alle Zeilen zwangsmäßig bis zum Ende zu durchlaufen. Das bedeutet in der Praxis bis zu 2 Minuten Dauer. Wenn man darauf wartet ganz schön lange. In Absprache mit dem Anwender machen wir das dann doch lieber mit der ursprünglichen Variante, da dann genau nach dem letzten Datenzeile es prompt aufhört. Da liegen wir immer unter 20 sec. Wenn man die Meldung kennt, ist das auch nicht weiters tragisch.

...zum Punkt "bunte Kästchen":
Ja, natürlich würde das genügen wenn die Farbe im Makro verankert wäre.
Ich verstehe nur nicht, kann man dann erkennen, dass 2 Arten der Kästchen-Belegung stattgefunden hat? Also z.B. "Notdienst" UND "Urlaub"?

Danke & Gruss,
Juergen


  

Betrifft: warum antwortest Du nicht? von: robert
Geschrieben am: 18.04.2018 17:30:32




  

Betrifft: AW: Terminplaner passt fast :) offen von: Firmus
Geschrieben am: 18.04.2018 21:46:05



Hi Jürgen,
Hi Robert,

@Robert: "warum antwortest Du nicht?" ging das an mich oder an Jürgen?
falls an mich: weil ich noch einen Vollzeitjob habe - der manchmal etwas intensiv ist.

@Jürgen:

anbei die nächste überarbeitete Version: https://www.herber.de/bbs/user/121138.xlsm

1. Die U/N .... Idee hatte ich auch. Mehrere die gleiche Idee: scheint brauchbar.
Ich habe sie in den Code eingebaut.
Ergänzend habe ich von Robert die Columns(Autofit) eingesetzt.
Das Bild wird mit den unterschiedlichen Spaltenbreiten dann etwas unruhig.

2. die Bedingte Formatierung (WE dominant vs. Coding):
Änderung in den Bedingungen sah ich nach einigen Tests auch.
Damit ist die Idee die Farben in VBA zu belegen hinfällig.
Das Fehlerrisko (ungleiche Bereiche [Bedingte Formatierung vs. VBA-Schleife] bleibt aber).
Ich habe D4:NC19 mit dieser Bedingten Formatierung versehen, getestet - klappt.

3. Laufzeit:
Es war ein (unentdeckter) Fehler im Code. Der Code wurde 19 x durchlaufen (je Position im Plan)
Das habe ich behoben, ich bin jetzt bei ca. 10-15 Sekunden. Sorry :-(((

4. Mehrfachbelegung eines Tages einer Person.
Wenn Kombinationen entstehen (z.B. ND/uU, und andere) sind diese in der Bedingten Formatierung
nicht abgedeckt. Es gibt IMHO zwei Lösungsansätze:
a) Bedingte Formatierung mit allen möglichen Kombinationen erweitern - fragliche Qualität, Fehleranfällig.
b) die Kombination in "Codierung" mit hinterlegen und eine Spalte für das Farbmuster für alle Kodierungen verwenden.
VBA könnte diese Farbmuster aufnehmen und in den Terminplan einsetzen.
Die Bedingte Formatierung ist dominant, d.h. WE, Feiertage usw. werden also nicht per VBA überschrieben.

5. Duplikate
Es sind einige Duplikate in den Daten "Terminliste" vorhanden. Diese sind dann in "Terminplaner"
als Kombinationen sichtbar. (z.B. bU/bU). Ist das so gewollt? Siehe auch 4. Farbgebung.
Lösung:
a) Doppelte Zeilen ermitteln und löschen (VBA oder Formel zum Erkennen)
b) VBA: Codierung nur setzen falls sie noch nicht vorhanden ist (IF Instr-Anweisung)

6. Benutzer-Risko:
Wenn in die Terminliste Termine eingetragen werden, die nicht im Jahr aus "C1" liegen,
werden diese einfach ignoriert.
Im Moment ist es unwahrscheinlich, dass es passiert, aber gegen Jahresende (24.12.2018-6.1.2019)
wird der 2019-Teil nicht eingetragen, und auch nicht angemeckert. Einfach ignoriert.

and again: Lass wissen, ob es passt.

Gruß,
Firmus


  

Betrifft: @Firmus von: robert
Geschrieben am: 19.04.2018 07:45:58

https://www.herber.de/forum/messages/1620159.html

Hi,
meine Frage war an Jürgen gerichtet(siehe Thread-Ast), weil er in dem Link
nicht auf meine Datei geantwortet hat, aber hier weitergemacht hat.

@Jürgen-ich bin dann mal weg, Du bist bei Firmus in guten Händen :-)

Gruß
robert