Stimmt leider nicht
18.09.2009 12:47:10
Uwe
Hallo Tino!
Ich glaub, Du kannst gar nicht verstehen, was ich meine, da ICH das bisher irgendwie schief ausdrücke.
Wenn`s Für Dich o.k. ist, gehen wir das Problem anders an. O.k.?
Punkt 1. Der Samstagszuschlag in der Zeit von 13:00 bis 21:00 funktioniert perfekt, so eben während dierser Zeit Samstags Arbeiten anfallen. Das passt.
Punkt 2. Fällt ein Samstag nun auf einen Vorfeiertag (Ostersamstag, Pfingstsamstag, Heiligabend oder Sylvester) oder einen Feiertag (Neujahr, Tag der Arbeit, Tag der deutschen Einheit, Allerheiligen, 1 Weihnachtstag, 2 Weihnachtstag) darf dieser Zuschlag NICHT gezahlt werden.
Das wäre für Dich vielleicht derart schrittweise einfacher umzusetzten?
Den Zuschlag für die Vorfeiertage bzw. Feiertage "gehen wir" dann später an....
Besten Dank im Voraus. Eine Datei hochladen klappt leider immer noch nicht. Aus diesem Grund häng ich die ursprüngliche, gut funktionierenden Prozedur für die Samstagsarbeit einfach mal an
Gruß
Uwe
Sub Samstag_TVöD()
Dim ErgebnisBereich As Range
'Funktion BerechneZeiten (steht im Modul ModulFunktion)
'1. Parameter von Zeit (als Uhrzeit)
'2. Parameter bis Zeit (als Uhrzeit)
'3. Parameter Bereich wo Ergebnis hinkommt
'4. Parameter Bereich mit den Wochentagen
'5. bis n ... Parameter Bereich wo die Werte stehen (entsprechend erweiterungsfähig)
With Sheets("TVöD") 'Tabellenname eventuell anpassen
Set ErgebnisBereich = .Range("AE5:AE35") 'Bereich für die Ergebnisse
ErgebnisBereich.Value = "" 'erst mal leer machen
ErgebnisBereich = BerechneZeiten(TimeSerial(13, 0, 0), TimeSerial(21, 0, 0), ErgebnisBereich, . _
Range("B5:B35"), .Range("M5:N35"), .Range("Q5:R35"), .Range("U5:V35"))
End With
Range("BL9").Value = WorksheetFunction.Sum([AE5:AE35])
End Sub
Function BerechneZeiten(StundeVon As Double, StundeBis As Double, ErgebnisBereich As Variant, _
ArrayWochentag As Variant, ParamArray WerteBereiche() As Variant)
Dim A As Long, B As Long
Dim Werte, ArrayErgebnis
ArrayErgebnis = ErgebnisBereich
With Application.Worksheet
Function 'für min Max Funktion
'Einzelwerte berechnen
For B = LBound(WerteBereiche) To UBound(WerteBereiche) 'Bereiche durchlaufen
Werte = WerteBereiche(B)
For A = 1 To UBound(Werte) 'Schleife über Array
If ArrayWochentag(A, 1) = "Sa" Then 'Sa?
If Werte(A, 2) > StundeVon Then
If Werte(A, 1)