Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1412to1416
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
automatisch neue Zeile
05.03.2015 15:27:31
Stephan
Hallo zusammen,
habe einen Dienstplan, in den in Spalte A das Datum nach Eingabe des Monats und Jahres in je einer Zelle (hier Zelle G2 für Monat und G3 für das Jahr) übernommen wird. In Spalte B trägt der Mitarbeiter hinter die Zelle des jeweiligen Tages seinen Dienstbeginn und in Spalte C sein Dienstende ein. Spalte D errechnet die arbeitsvertragliche Pause und Spalte E die Nettoarbeitszeit. Da sich an einem Wochenende und Feiertag der Dienst splittet, also eine Art Teildienst, wird an dem jeweiligen Tag eine weitere Zeile benötigt um jeweils die beiden Teile des Dienstes in eine eigene Zeile eintragen zu können. Es hat aber immer nur ein Mitarbeiter an den jeweiligen Sams-, Sonn- oder Feiertagen Dienst. Die Möglichkeit, im Vorfeld diese Zeilen bereits für alle MA zu verdoppeln, scheidet somit aus. Daher sollte nur dann eine zusätzliche Zeile automatisch erstellt werden, sobald in der Spalte B, mit dem Dienstbeginn, ein Eintrag vorgenommen wird, und das eben nur an Wochenenden bzw. Feiertagen. Problem u. a. ist durch die wechselnden Monate haben die Wochenende keine feste Position in der Tabelle. Die Anwender haben unterschiedliche Excelkenntnisse, daher sollten zum einen nur Zellen mit Eingabemöglichkeiten ungeschützt bleiben und zum anderen sollten die Anwender nicht per Button eine neue Zeile erzeugen müssen. (Geschweige denn mit Copy und Paste;)
Meint ihr so etwas wäre möglich? Bitte zu beachten, dass meine VBA-Kenntnisse mehr als rudimentär sind.
Ich würde mich freuen, wenn ich Ideen von euch bekommen würde
vielen Dank für eure Zeit und Mühe, beste Grüße, Stephan

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: automatisch neue Zeile
05.03.2015 16:25:34
Klexy
Das würde ich so nicht machen.
Ich würde für die geteilten Schichten zusätzliche Spalten rechts machen.
Anordnung:
Datum | Wochentag | Anfang1 | Ende1 | Anfang2 | Ende2 | Pause | Arbeitszeit |
den Wochentag berechnest du so (vorausgesetzt, in A2 steht das Datum):
=WOCHENTAG(A2;2)
Die Spalte mit dem Wochentag formatierst du als "TTT" (für Mo) oder als "TTTT" (für Montag)
Jeder, der eine geteilte Schicht hat, füllt auch die Spalten E und F aus, an den anderen Tagen werden die einfach ignoriert.
Mit bedingter Formatierung kannst du die "verbotenen" Felder einfärben, damit keiner aus Versehen an einem Montag eine Doppelschickt einträgt.

Anzeige
AW: automatisch neue Zeile
06.03.2015 07:23:07
Stephan
Hallo Klexy,
vielen Dank für deinen Vorschlag. Ist sicher eine leicht umsetzbare Lösung, aber nicht ganz das, was ich mir vorgestellt habe.
Die Spalten F - I sind bereits für weitere Daten belegt: F = Einträge für bezahlte Abwesenheit wie Urlaub, Krankheit usw. G und H für Beginn bzw. Ende eines Bereitschaftsdienstes und I = dessen Stunden. Sicher wäre es ein einfaches, diese Spalten zu verschieben. Allerdings hat derjenige (Arzt), der am WE oder Feiertag "Teildienst" hat, ebenfalls einen gesplitteten Bereitschaftsdienst. Das würde bedeuten ich müsste für den Bereitschaftsdienst ebenfalls mind. 2 weitere Spalten einfügen. Der ganze Plan sollte zudem ausgedruckt in gut lesbarer Schriftgröße auf eine Seite eines A4 Blattes passen. Das tut er zur Zeit auch und mit 1 oder 2 Zeilen mehr würde das auch noch passen.
Ein Arzt hat meist 1 x max. 2 x im Monat ebendiesen Dienst. Die Zellen der restlichen Tage blieben somit leer und wären überflüssig.
Mir schwebte da eine etwas elegantere Lösung vor: nur eine weitere Zeile nach Eingabe in benannter Zelle.
Gibt es da nicht vielleicht eine weitere Lösung?
Grüße, Stephan

Anzeige
AW: automatisch neue Zeile
06.03.2015 09:24:21
Klexy
Das wäre sicher machbar, aber sehr aufwendig von der Programmierung her. Ebenso von der Anwendung her, weil es eine höhere Disziplin beim Eintragenden erfordert. Und gleichzeitig unübersichtlicher, weil die Liste nicht homogen ist.
Das stünde in keinem Verhältnis zum Gewinn bei der Schriftgröße im Druck.
Hast du da vom Format her schon alles ausgereizt? Lad doch die Datei mal hoch, da ist aus meiner Erfahrung immer noch Optimierungspotenzial bei der Druckansicht.

AW: automatisch neue Zeile
06.03.2015 11:59:39
Stephan
Hallo Klexy,
habe meine Datei hochgeladen. Der (ohne Passwort versehene) Blattschutz ist nur zur Absicherung, dass hinterlegte Formel nicht vom Anwender "versehentlich" überschrieben werden können, ungeschützt sind die Zellen, welche (z. T.) Eingaben erfordern.
https://www.herber.de/bbs/user/96198.xls
Mir wäre trotz allem eine zusätzliche Zeile am passendsten, da dadurch nicht mehr 100 unnötige Zellen auf dem Blatt sind, was den Plan m. E. unübersichtlicher gestalten würde.
Momentaner Stand der Tabelle wäre, dass der MA ggfs. eine Zelle hinzufügen müsste, Anweisungen dazu im Textfeld. Befürchtung ist aber, dass das nicht jeder hinbekommt.
Das Problem mit dem (nicht möglichen) Einfügen einer kopierten Zeile bei Blattschutz, bzw. um die Formeln ohne Blattschutz zu schützen, würde ich lösen indem entsprechende Zellen mit einer Gültigkeitsabfrage provisorisch "geschützt" werden.
So sollte der Plan dann ungefähr ausschauen:
https://www.herber.de/bbs/user/96200.xls
rot umrahmte fett geschriebene Zellen wären dann z. B. ein geteilter Dienst Tag,
liebe Grüße, Stephan

Anzeige
AW: automatisch neue Zeile
06.03.2015 16:05:10
Klexy
Ok. Dann mal eine einfache Lösung, weil die Formeln in allen Zeilen gleich bleiben. Ich dachte zuerst, die getrennten Schichten würden anders berechnet
Sub Tag_verdoppeln()
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 9)).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End Sub

AW: automatisch neue Zeile
09.03.2015 10:15:36
Stephan
Hallo Klexy,
vielen Dank für deine Antwort und entschuldige, dass ich erst heute reagieren kann. Habe den Dientplan bei der Arbeit und habe von zu Hause keinen Zugriff darauf.
Ich habe deinen Code in meine Datei eingefügt und getestet. Er kommt der Sache, die ich erreichen möchte schon sehr nahe. Ich denke nur, dass für erwähnte Anwender das Ausführen eines Makros schwieriger zu bewerkstelligen ist, als eine Zelle zu kopieren und einzufügen. Sicher könnte ein Button eingerichtet werden, dennoch wäre ein Automatismus die einfachst zu handlende Lösung: sobald ich die Eingabe in einer bestimmten Zelle (z. B. Dienstbeginn bzw. -ende) bestätige, wird eine weitere Zeil hinzufügt.
Ich denke, die größte Hürde ist sicherlich, dass die Zeilen mit Wochenenden und Feiertagen von Monat zu Monat unterschiedlich sind und dass jeder Arzt nur meist an einem dieser Tage Dienst hat und nur dann solch eine weitere Zeile nötig ist.
Wäre so eine Lösung dennoch machbar?
beste Grüße, Stephan

Anzeige
AW: automatisch neue Zeile
09.03.2015 13:54:30
Klexy
Was ist denn einfacher als die Zelle mit dem gewünschten Tag zu markieren und einen Button mit dem Makro zu drücken? Wenn das Ärzte sind, sollten sie das schaffen.

AW: automatisch neue Zeile
09.03.2015 14:51:05
Stephan
Hi Klexy,
gebe ich dir volkommen recht, sollte im Prinzip für jeden Anwender insbesondere Akademiker lösbar sein. Allerdings gehen wir hier davon aus, dass der Anwender keine Kenntnisse hat und das unabhängig vom Bildungsgrad.
Dennoch befürchte ich, wir fangen gerde an, uns ein wenig im Kreis zu drehen. Lösungsansätze von anderen Seiten sind sicherlich ok und waren im Vorfeld intern auch meinerseits angedacht, allerdings ist das nicht das Ziel meiner Anfrage. (Button und Copy und Paste hatte ich bereits in meiner 1. Anfrage versucht, auszuschließen)
Eventuell weisst du, ob so eine automatisierte Lösung überhaupt möglich ist: Zellinhalt eingeben - bestätigen - neue Zeile. Das würde mir sehr weiterhelfen.
Ich meine, es ist möglich bei Tabellen, nach Eingabe in die letzte Zeile darunter automatisch eine neue Zeile zu erzeugen. Aber, ob das hier auf diesen Sonderfall angepasst werden kann, wäre für mich interessant. Wie geagt m. E. Hauptproblem hier: die Zeilen für Wochenenden und Feiertage sind nicht fix.
beste Grüße, Stephan

Anzeige
AW: automatisch neue Zeile
10.03.2015 18:29:13
Klexy
Den Code musst du direkt ins VBA-Fenster des Tabellenblatts kopieren (also nicht in ein eigenes Makro-Modul)
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Ende
Dim kyDatum As Range
Set kyDatum = Target.Offset(0, -1)
Dim kyFeiertage As Range
Set kyFeiertage = ActiveSheet.Range("C64:C76")
Dim kyWochentag As Integer
kyWochentag = Weekday(Target.Offset(0, -1), 2)
If Target.Column = 2 Then
If kyWochentag > 5 Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 9)).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
ElseIf WorksheetFunction.VLookup(kyDatum, kyFeiertage, 1, False) > 0 Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 9)).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End If
Else
End If
Ende:
End Sub
Er ist aber gefährlich, weil er selbstausführend ist, wenn einer in einer Zelle der Spalte B drin ist und sie wieder verlässt. Egal was er da gemacht hat. Da darf also keiner rumklicken und ausprobieren, sonst ist die neue Zeile da.
Ich rete davon ab, gerade wegen der anspruchsvollen Disziplin, die bei sebstausführendem Code geboten ist, und rate zur Button-Lösung. Den trifft keiner so schnell aus Versehen.
Und der kann auch durch die Wochentag- und Feiertag-Abfrage so eingeschränkt werden, dass er an normalen Wochentagen nicht funktioniert.
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige