Excel - Arbeitszeit berechnen

Asked By RogHB346 on 15-Feb-10 03:29 AM
Hallo Newsgroup,

In meinem Schicht u. Urlaubskalender trage ich per VBA die Arbeitszeit ein
f?r jeden Mitarbeiter eine Spalte (6 Mitarb.)  E  bis   J

in diesen Spalten steht (Start Zeile 4 Endzeile je Monatsende

8:00 - 18:30
8:00 - 18:30
8:00 - 18:30
Frei
13:00 - 18:30
8:00 - 14:00
So
Urlaub
Urlaub
Urlaub
8:00 - 18:30
Frei
8:00 - 14:00

Meine Variable lautet "MitArbz1(a, 1)"   "MitArbz2(a, 1)"  bis

nun m?chte bei diesen Eintr?gen aber auch gleich die Monatliche
Arbeitszeit berechnen.

Leider ist das Brett wieder besonders Dick :-(


--
MfG - Heinz
Zum guten Gl?ck gibt es keine bl?den Fragen. Entweder wei? man nach
deren Beantwortung mehr oder man ist im Wissen stehen geblieben.
Anf?nger in Excel  - Nobodys perfekt  (VBA Progm. Excel 2007)




Peter Schleif replied to RogHB346 on 15-Feb-10 04:45 AM
RogHB346 schrieb am 15.02.2010 09:29 Uhr:

Vielleicht hilft dir eine der beiden VBA-Functions, die ich unten
notiert habe. Beide geben einen TimeValue zur??ck. Bei Verwendung in
einer Zelle empfiehlt sich also die Formatierung [h]:mm.

VBA-Variablen oder in der Tabelle auf einzelnen Zellen anwenden.

Parameter aber einen Bereich entgegen und summiert dann alle
Arbeitszeiten in dem Bereich.

Peter

Function ArbeitszeitAusString(ByVal s As String) As Date
Static regex As Object

If regex Is Nothing Then Set regex=CreateObject("VBScript.RegExp")
regex.Pattern = "(\d{1,2}:\d{2})\s*-\s*(\d{1,2}:\d{2})"

ArbeitszeitAusString = TimeValue(regex.Replace(s, "$2")) _
- TimeValue(regex.Replace(s, "$1"))
End Function

Function ArbeitszeitAusBereich(Bereich As Range) As Date
Static regex As Object
Dim zelle As Range

If regex Is Nothing Then Set regex=CreateObject("VBScript.RegExp")
regex.Pattern = "(\d{1,2}:\d{2})\s*-\s*(\d{1,2}:\d{2})"

For Each zelle In Bereich
If regex.test(zelle.Text) Then
ArbeitszeitAusBereich = ArbeitszeitAusBereich _
+ TimeValue(regex.Replace(zelle.Text, "$2")) _
- TimeValue(regex.Replace(zelle.Text, "$1"))
End If
Next
End Function
Peter Schleif replied to Peter Schleif on 15-Feb-10 04:55 AM
Peter Schleif schrieb am 15.02.2010 10:45 Uhr:

Sorry. Da ist mir die If-Abfrage abhanden gekommen.

If regex.test(s) Then
ArbeitszeitAusString = TimeValue(regex.Replace(s, "$2")) _
- TimeValue(regex.Replace(s, "$1"))
End If


Peter
RogHB346 replied to Peter Schleif on 15-Feb-10 07:56 AM
Am 15.02.2010 10:55, schrieb Peter Schleif:

Hallo Peter,
herzlichen Dank f??r Deine Hilfe
perfekt wie immer in dieser Newsgroup.
--
MfG - Heinz
Zum guten Gl??ck gibt es keine bl??den Fragen. Entweder wei?? man nach
deren Beantwortung mehr oder man ist im Wissen stehen geblieben.
Anf??nger in Excel  - Nobodys perfekt  (VBA Progm. Excel 2007)