kleines aber feines Ärgernis
31.07.2014 08:25:23
Markus
Um meine Arbeitszeiten aufzunehmen benutze ich ein Excel Tool das mir dann alles berechnet.
Mir ist mir dabei was aufgefallen und möchte hier erfragen wie man das Ändern kann.
Zur Erklärung: zuerst mal ein Beispiel https://www.herber.de/bbs/user/91802.xls
Das Tool rechnet die Pausenzeiten raus. Diese sind bis 6h 0 min, ab 6h bis 9h 30min und dann bis 10h 45min.
Das Makro fragt dies ab. Funktioniert soweit ganz gut.
Es gibt aber ein kleines Detail wo es nicht klappt. Es gibt die Abfrage wenn die Arbeitszeit nach 12:30 Uhr endet und vor 12 Uhr beginnt wird eine Pause von 30min ausgegeben, obwohl auch die Abfrage über die Länge der Arbeitszeit Am besten mal das Beispiel durchgehen. Da wird es bestimmt verständlicher.
Gruß
Markus
Sub Zeiten()
Monat = ActiveSheet.Cells(3, 11)
Worksheets(Monat).Activate 'Tabelle aktueller Monat
For J = 1 To 2 'linker und rechter Spaltenblock
If (J = 1) Then 'Spalten linker Zeitenblock
St = 3
En = 4
Da = 5
Pm = 7
Pd = 8
Else 'Spalten rechter Zeitenblock
St = 9
En = 10
Da = 11
Pm = 13
Pd = 14
End If
For I = 1 To 31 'Zeilen mit Zeiten
Po = 0 'Pausenmodell
Pa = 30 'Pausendauer
Range(Cells(10 + I, Da), Cells(10 + I, Da)) = ""
Range(Cells(10 + I, Pm), Cells(10 + I, Pm)) = ""
Range(Cells(10 + I, Pd), Cells(10 + I, Pd)) = ""
ActiveSheet.Cells(1, 26) = Range(Cells(10 + I, St), Cells(10 + I, St))
ActiveSheet.Cells(2, 26) = Range(Cells(10 + I, En), Cells(10 + I, En))
ActiveSheet.Cells(3, 26) = "=ISTEXT(R1C26)" 'beinhaltet Zelle Text
ActiveSheet.Cells(4, 26) = "=ISTEXT(R2C26)"
'wenn Zelle Text beinhaltet, nicht bearbeiten
If ((ActiveSheet.Cells(3, 26) = True) Or (ActiveSheet.Cells(4, 26) = True)) Then
Else
ActiveSheet.Cells(1, 25) = "=HOUR(TEXT(R1C26,""hh:mm:ss""))" 'dezimale _
Stunde ah
ActiveSheet.Cells(2, 25) = "=HOUR(TEXT(R2C26,""hh:mm:ss""))" ' _
eh
ActiveSheet.Cells(3, 25) = "=(MINUTE(TEXT(R1C26,""hh:mm:ss""))/60)" 'dezimale _
Minute am
ActiveSheet.Cells(4, 25) = "=(MINUTE(TEXT(R2C26,""hh:mm:ss""))/60)" ' _
em
ah = ActiveSheet.Cells(1, 25)
eh = ActiveSheet.Cells(2, 25)
am = ActiveSheet.Cells(3, 25)
em = ActiveSheet.Cells(4, 25)
'wenn Zelle ohne Inhalt, nicht bearbeiten
If (IsEmpty(ActiveSheet.Cells(10 + I, St)) Or IsEmpty(ActiveSheet.Cells(10 + I, En)) _
) Then 'wenn Zelle leer, nichts
Else
'wenn Start bis 12:00 und Ende ab 12:30
If (((ah + am) = 12.5)) Then
'wenn Gesamtzeit 9.5) And ((eh + em - ah - am) 9.75) And ((eh + em - ah - am) 10.75h
ElseIf ((eh + em - ah - am) > 10.75) Then
ActiveSheet.Cells(10 + I, Da) = "10"
Po = 5
Pa = 45
End If
'wenn Start ab 12:30, d.h. ohne Pause
Else
Po = " "
Pa = 0
'wenn Start nach 12:00 oder Ende vor 12:30
If (((ah - am) > 12) And ((eh + em) 9 And (eh + em - ah - am) 9.25 And (eh + em - ah - am) 10.25) Then
ActiveSheet.Cells(10 + I, Da) = 10
End If
End If
ActiveSheet.Cells(10 + I, Pm) = Po
ActiveSheet.Cells(10 + I, Pd) = Pa
End If
End If
Next I
Next J
End Sub