Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1620to1624
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

Std. bei Urlaub usw. analog Mitarbeiter zuordnen

Std. bei Urlaub usw. analog Mitarbeiter zuordnen
27.04.2018 14:49:04
Uwe
Moin liebe Excel-Wissende,
ich beziehe mich nochmal auf meinen Thread vom 12.04. (Daten gleichzeitig in mehrere Zellen schreiben,...) und der Idee von Daniel am 17.04. für die ich mich an dieser Stelle bedanke.
Leider komme ich an den Beitrag nicht mehr schreibend dran (vermutlich seh ich den Wald vor Bäumen nicht) und mach daher ein neues "Fass" auf ;)
Es ist mir mittlerweile gelungen die Toogle-Buttons etwas sinniger einzufärben (optimal ist das aber noch nicht wirklich) und auch das parallele Schreiben vom SOLL in den IST-Plan funktioniert.
Ich hab das mal so gelöst, ob's besser geht kann mir hoffentlich jemand sagen:

Sub WriteVal()
Dim oVal As Variant
Dim oVal2 As Variant
Dim rAC As Range
Dim SN As String
SN = ActiveSheet.Name
Set rAC = Selection
If rAC.Columns.Count = 1 And ActiveSheet.Cells(5, rAC.Column) = "A" Then
oVal = Application.WorksheetFunction.VLookup(ThisWorkbook.Sheets(SN).Range("A2"), _
Tabelle5.Range("H1:J22"), 2, False)
rAC.Offset(0, 3).Value = oVal
If IsNumeric(Left(ThisWorkbook.Sheets(SN).Range("A2"), 2)) Then
oVal2 = Application.WorksheetFunction.VLookup(ThisWorkbook.Sheets(SN).Range("A2"),  _
_
Tabelle5.Range("H1:J22"), 3, False)
rAC.Value = oVal
rAC.Offset(0, 1).Value = oVal2
rAC.Offset(0, 4).Value = oVal2
If Not rAC.Offset(0, 2).HasFormula Then
rAC.Offset(, 2).FormulaR1C1 = "=(RC[-1]-RC[-2])*24"
rAC.Offset(, 2).NumberFormat = "0.00_ ;[Red]-0.00"
rAC.Offset(, 5).FormulaR1C1 = "=(RC[-1]-RC[-2])*24"
rAC.Offset(, 5).NumberFormat = "0.00_ ;[Red]-0.00"
End If
Else
rAC.Offset(0, 0).Value = oVal
rAC.Offset(0, 3).Value = oVal
End If
Else
MsgBox "Für Eingabe von Anfangszeiten nur [A]-Spalten selektieren!", _
vbOKOnly, "Eingabebereich prüfen"
End If
Set rAC = Nothing
End Sub

Da es mir auch gelungen ist "Sonderzeiten" wie Frei, Urlaub, Krank usw. nach vorne in die "A"nfangszeit zu setzen benötige ich nun nur noch die jeweils anrechenbare Stunden in der "S"tunden-Spalte (frei halt natürlich 0,00 Std). Diese befinden sich in einer Hilfstabelle direkt hinter dem jeweiligen Mitarbeiter, so wie er auch auf den Dienstplan-Sheets oben zu finden ist bzw. ausgewählt werden kann, in der Spalte TgAZ.
Wie bekomme ich das in den Code oben oder in einer weiteren "Funktion" umgesetzt?
Ein weiteres wäre, daß beim Erstellen des DP auschließlich nur die Spalte "A"nfangszeit im Bereich SOLL ausgewählt werden darf, um den Ersteller zu zwingen den SOLL-Plan auch dort zu erstellen und nicht wie schon zuletzt passiert im IST-Plan.
Wenn jemand auch eine Idee hat wie ich die Urlaubstage zählen und den Resturlaub ermitteln bzw. schreiben (Hilfstabelle RUrl) kann wäre mein Tool fast schon fertig ;)
Vielen Dank schon mal im Voraus.
Grüße,
Uwe
https://www.herber.de/bbs/user/121327.zip
P.S. die aktuelle Version mußte ich als Zip hochladen, da xlsm vom Server nicht angenommen wurde. Sie enthält übrigens ne Menge Daten ;)

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Std. bei Urlaub usw. analog Mitarbeiter zuordnen
30.04.2018 09:23:34
fcs
Hallo Uwe,
ich hab mich mal mit deiner Datei beschäfftigt.
https://www.herber.de/bbs/user/121356.zip
Die Anpassung des Makros zum Eintragen der Werte per Taste F2 ist kein Problem.
Mit ein paar weiteren Prüfungen kann man die Selektion auf die A-Spalte im Sollbereich einschränken.
Damit die Formeln etwas übersichtlicher werden und auch die Berechnung des Resturlaubs möglich wird habe ich folgende Anpassungen im Blatt "Hilfstabelle" gemacht:
  • Spalte "Plan" eingefügt
    in dieser Spalte werden zu den Namen der MA der Name des Tabellenblattes mit dem Dienstplan eingetragen auf dem der MA steht.

  • Namen "MA_Daten" und "Dienstzeiten" für Zellbereiche eingefügt.
    Diese Namen werden im Makro und in Formeln verwendet.

  • Die Formeln eingefügt zur Übernahme des in den Dienstplänen berechneten Restürlaubs.

  • Auf den Diebstplan-Blättern sind unterhalb der Berechnungen für die Arbeitstage und Stunden die Formeln eingefügt zur Berechnung der genommen Urlaubstage und des Resturlaubs.
    Bei den Makros hab ich außer den Ergänzungen zur Prüfung der Selektion und dem Einfügen der Formeln auch noch ein wenig optimiert:
  • Function Ausblenden
    So modifiiziert, dass nicht jede Zeile einzeln ein-/ausgeblendet wird, sondern immer ein kompletter Zeilenblöck. Beschleunigt die Ausführung

  • Makros für Toggle-Buttons vereinfacht
    Zum Ein-/Ausblenden der Spalten mit Ist-/Sollwerten wird jetzt das neue Makro "HideShowSollIst" aufgerufen.
    Die individuellen Makros unter den Dienstplan-Blättern sind entfallen

  • Unter den Dienstplan-Blättern ist "ThisWorkbook.Sheets(Nr).Cells(...)..." ersetzt durch "Me.Cells(...)..."
    Bei Code unter einem Tabellenblatt kann man mit Me das Tabellenblatt-Objekt ansprechen unter dem der Code steht. Man könnte hier das Tabellenblatt-Objekt auch ganz weglassen, denn Cells und Range beziehen sich im Code hier immer auf das Blatt unter dem der Code steht.

  • Gruß
    Franz
    Anzeige
    AW: Std. bei Urlaub usw. analog Mitarbeiter zuordnen
    02.05.2018 10:01:28
    Uwe
    Hallo Franz,
    ganz lieben Dank für die Mühe die Du Dir gemacht hast. Was Du schreibst las sich zunächst sehr vielversprechend, leider konnte ich es jedoch nicht testen bzw. den Fehler finden, warum das Eintragen via "F2" zeitweise nicht funktioniert. Gleich beim Öffnen der Datei (Workbook_Open) steigt das Makro ab und an an der Stelle 'Application.OnKey "{F2}", "WriteVal"' aus, ohne daß ich nachvollziehen kann warum das so ist.
    Ansonsten TipTop :)
    LG, Uwe
    AW: Std. bei Urlaub usw. analog Mitarbeiter zuordnen
    02.05.2018 11:35:48
    fcs
    Hallo Uwe,
    warum gelegentlich die Belegung der Taste F2 mit dem Makro nicht funktioniert kann ich nicht nachvollziehen.
    Bei hat es eigentlich immer funktioniert.
    Probleme gibt es natürlich wenn man mehrere Dateien gleichzeitig öffnet, die die Belegung der Tasten ändern.
    Evtl. ist es auch eleganter, wenn du eine Schaltfläche aus den Formularelementen einbaust und dieser das Makro "WriteVal" zuweist.
    Weitere Alternative: Du weist das Makro "WriteVal" direkt einer Tastenkombination zu (z.B. Strg+q)
    Gruß
    Franz
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige