Schichtplanung Tagesbasis
#11
Vielen Dank im Voraus.

Ich bin gerade dabei mich mit VBA auseinander zu setzen und habe durch ein Tutorial eine UserForm erstellt. Die Eingaben die dort getätigt werden ändern die Zellenformatierung von z.B. Datum auf Text. Lässt sich das einstellen?
Top
#12
Hallo,

leider nein. Wenn du den Inhalt der TextBox in die Liste zurück schreibst, kannst du das mit der Funktion cdate in ein Datum zurück verwandeln.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#13
Hallo

wenn du die UserForm fertig hast würde ich sie mir gerne ansehen.  Datum in Tabelle geht so:   Range("xxx").Value = CDate(TextBox1)

mfg Gast 123
Top
#14
anbei mal die Datei. Nix besonderes, nur eine UserForm nach YouTube-Tutorial, leicht abgeändert...


Angehängte Dateien
.xlsm   Urlaub_Neu.xlsm (Größe: 256,88 KB / Downloads: 11)
Top
#15
Gäbe es die Möglichket alle abgefragten Werte in das eine Tabelleblatt, sowie nur ein paar wenige bestimmte in ein weiteres Tabellenblatt zu implementieren?

Die Userform trägt alles ins Tabellenblatt "Daten" ein. Optimalerweise möchte ich ein paar wenige von ebendiesen Daten in ein weiteres Tabellenblatt eintragen:


Ich möchte somit quasi drei Schritte in einem durchführen.

1. einen neuen Mitarbeiter anlegen und diesen gleichzeitig im Tabellenblatt 'Daten', 'Urlaub' und in der 'Schichtplanung' einpflegen. Alle gepflegten Daten des UserForm sollen in die Tabelle im Tabellenblatt 'Daten' gepflegt werden.

2. Im Tabellenblatt 'Urlaub' nur der Bereich, Name und der errechnete Urlaubsanspruch in den jeweils dafür vorgesehenen Feldern in Spalte A (Bereich), B (Name, Vorname) und C (Urlaubsanspruch) der Zeile die ich frisch hinzugefügt haben möchte.

3. Im Reiter Schichtplanung hingegen die Werte Bereich, Name und das Schichtmodell in die Spalten A, B und C.


Falls das nicht einem Schritt geht (wovon ich jetzt erstmal nicht ausgehe :19: ) würde ich schauen das ich drei Buttons einrichte. Der erste Button ist um den MA anzulegen, die beiden anderen Buttons um bestimmte Daten in das jeweils gewünschte Tabellenblatt zu kopieren.

Wird sicherlich mega kompliziert (für mich als Laie zumindest), aber ich möchte das verstehen und hinbekommen können.

PS: Wie kann ich die UserForm die Daten eintragen und das Fenster gleichzeitig schließen lassen? Das es nach Absenden der Daten offen bleibt finde ich ein wenig lästig...


Danke und Gruß
Christian
Top
#16
Hallo Christian,

habe mir dein Projekt mal angesehen. Meiner Ansicht nach ist der Aufbau zu kompliziert. Die Blätter Urlaub und Schichtplanung beinhalten ja fast die gleichen Daten. So etwas sollte man grundsätzlich vermeiden. 

Dann hast du dir die unnütze Arbeit gemacht, die Objekte des UserForm mit Namen zu versehen. (Ich weiß, da kann man geteilter Meinung sein). Mir ist es lieber, mit den Standardnamen zu arbeiten, weil es dadurch erleichtert wird, Daten über Schleifen einzutragen. 

Wozu das Blatt ehemalige Mitarbeiter? Was sagt der Datenschutz dazu?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#17
Hallo Klaus-Dieter,

Danke für deine Nachricht.

Jein. Natürlich sind die Blätter nahezu identisch. Ich möchte ja in identischen Bereichen - hier die einzelnen Tage - versuchen Daten abzugleichen um daraus eine Schlussfolgerung ziehen zu können. Nämlich, ob der MA an dem Tag eingeplant werden kann oder eben nicht, weil er halt nicht da ist.

Natürlich könnte ich nur ein Tabellenblatt nutzen, was den eigentlichen Urlaubsplan hingegen ziemlich unübersichtlich machen würde.

Hast du einen anderen Vorschlag, wie ich das anders angehen könnte um nahezu, natürlich einfacher, an mein Ziel zu kommen? 

Der für mich einfachste Weg war der 1:1 Abgleich der Felder, was jedoch zu Lasten der Performance geht aufgrund der 30000 Formeln.

Ich könnte mir auch vorstellen, dass das zweite Tabellenblatt noch ohne Daten erzeugt wird und ich auf Befehl (CommandButton) je nach Datum die Spalten kopiere bzw. fülle, vorausgesetzt sein Tagesfeld ist leer. Ist dies gefüllt, wird diese Spalte für diesen MA leer bleiben.
Das Grundgerüst, bestehend aus Name, Bereich und Schichtmodell (Spalte A, B und C), soweit die ersten Zeilen für Datum und Wochentag (Zeile 1 und 2), sowie paar Zeilen zur Auswertung (wie viele MA habe ich auf jeder Schicht sollen hier natürlich vorhanden sein.

Für einfachere Ansätze bin ich jederzeit offen. Vielleicht ist mein Denken auch einfach nur zu kompliziert, weil mir die Erfahrung bzw. Überhaupt das wissen in VBA fehlt?!

Vielen Dank für Eure Geduld mit mir  Blush

Edit:
Das Blatt der ehemaligen Mitarbeiter soll mir nur mitteilen wer uns wann verlassen hat und durch wen er ersetzt wurde,  sowie in welchem Bereich er gearbeitet hat. Also nur Name, Datum Austritt, Bereich, ersetzt durch.
Top
#18
Hallo,

auf dem Blatt Schichtplanung werden die Urlaubstage doch ohnehin markiert, wenn ich das richtig verstanden habe. Dann hast du doch alles was du brauchst.

Hallo,

habe deine Formel in Zelle D17 korrigiert, sie muss so lauten: =WENN('Urlaub 2020'!F10="";SVERWEIS($C17;$C$8:$NG$15;SPALTE(B1);FALSCH);"X") dann einfach nach rechts ziehen. In den Zellen C8 bis C15 sind die Werte teilweise falsch geschrieben, dann kann der SVerweis auch nicht funktionieren. Das ganze würde ich, wie bereits angedeutet, mit VBA lösen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#19
Hi,

ich würde das B1 noch mit $ fixieren:
=WENN('Urlaub 2020'!F10="";SVERWEIS($C17;$C$8:$NG$15;SPALTE(B$1);FALSCH);"X")
Top
#20
Hallo

ich freue mich einen Erstentwurf für eine VBA Lösung hochladen zu können, im Augenblick noch mit Fehlern. Weil die Datei erst naechstes Jahr zum Einsatz kommen soll spielt das keine Rolle. Für interessierte Kollegen auch als xlsx Datei, da fehlt natürlich die schöne UserForm für neue Mitarbeiter. Die Makros sind in einer Tabelle aufgelistet.  

Neu für Christian ist eine Spalte in "Daten" für den Wochentag, und das klappt zur Zeit noch nicht 100%.  Ein Problem beim automatischn ausfüllen sehe ich darin:  an welchem Wochentag wird gearbeitet, wenn ein MTA nur 1-3 Tage arbeiten will? Das kann ja nicht immer Montag sein. Also richtete ich dafür eine neue Spalte ein.

Das normale Ausfüllen einer ganzen Woche oder 4 tage klappt schon recht gut, nur bei Einzeltage ist noch eine "Macke" im Makro. 
Zum testen wie gut die Lösung geworden ist reicht es aber durchaus aus. Fehler finden man immer noch. 

Bitte in der Testphase nicht im Original testen, denn ich lösche alle Formeln im Blatt!  Nun bin ich gespannt auf die Rückmeldung ....  

mfg Gast 123


Angehängte Dateien
.xlsm   Urlaub_Neu.xlsm (Größe: 244,98 KB / Downloads: 9)
.xlsx   Urlaub_Neu.xlsx (Größe: 220,49 KB / Downloads: 5)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste