einmal mehr habe ich ein, eigentlich sicher lösbares, Problem. Zur Zeit nutze ich das nachfolgende, funktionierenden "private" Modul:
Sub Arbeitszeit()
Dim rng As Range
Range("D5:D35").ClearContents
For Each rng In Me.Range("A5:A" & Me.Cells(Rows.Count, 1).End(xlUp).Row)
Select Case Weekday(rng, 2)
'Festsetzung der täglichen Arbeitszeit (Mo-Do)
Case 1 To 4
rng.Offset(0, 3) = TimeSerial(8, 15, 0)
rng.Offset(0, 4) = TimeSerial(7, 30, 0) 'Beginn
rng.Offset(0, 5) = TimeSerial(16, 15, 0) 'Ende
'Festsetzung der täglichen Arbeitszeit (Fr)
Case 5
rng.Offset(0, 3) = TimeSerial(6, 0, 0)
rng.Offset(0, 4) = TimeSerial(7, 30, 0) 'Beginn
rng.Offset(0, 5) = TimeSerial(13, 30, 0) 'Ende
Case Else
End Select
Next
End Sub
Dieses Modul spreche ich mit der Anweisung Call Worksheets("Mitarbeiter1").Arbeitszeit an. Auch noch in Ordnung. Jetzt aber mein Problem.Zur Zeit benötige ich exakt diese Prozedur allerdings nicht nur für einen, sondern für insgesamt 23 Mitarbeiter. Meine bisherigen Versuche, hieraus "einfach" ein öffentliches Modul über die Anweisung Call Arbeitszeit anzusprechen scheitern bisher. Es tut sich schlicht nichts...
Das veränderte Modul wäre dann - nach meinen Überlegungen - das:
Sub Arbeitszeit()
Dim rng As Range
Dim wks As Worksheet, w As Worksheet
If Not wks Is tb31100000 Then
With wks
Range("D5:D35").ClearContents
For Each rng In Range("A5:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Select Case Weekday(rng, 2)
'Festsetzung der täglichen Arbeitszeit (Mo-Do)
Case 1 To 4
rng.Offset(0, 3) = TimeSerial(8, 15, 0)
rng.Offset(0, 4) = TimeSerial(7, 30, 0) 'Beginn
rng.Offset(0, 5) = TimeSerial(16, 15, 0) 'Ende
'Festsetzung der täglichen Arbeitszeit (Fr)
Case 5
rng.Offset(0, 3) = TimeSerial(6, 0, 0)
rng.Offset(0, 4) = TimeSerial(7, 30, 0) 'Beginn
rng.Offset(0, 5) = TimeSerial(13, 30, 0) 'Ende
Case Else
End Select
Next
End With
End If
End Sub
Was aber läuft hier falsch? Vielleicht einfach nur ein Denkfehler? Mmmmhhh...Für Hilfe und sachdienliche Hinweise bin ich natürlich dankbar.
Gruß
Uwe