Arbeitszeit berechnen

15/02/2010 - 09:29 von RogHB346 | Report spam
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
"MitArbz6(a, 1)"

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)
 

Lesen sie die antworten

#1 Peter Schleif
15/02/2010 - 10:45 | Warnen spam
RogHB346 schrieb am 15.02.2010 09:29 Uhr:

8:00 - 18:30
8:00 - 18:30
8:00 - 18:30
Frei
[...]
Meine Variable lautet "MitArbz1(a, 1)" "MitArbz2(a, 1)" bis
"MitArbz6(a, 1)"
nun möchte bei diesen Eintràgen aber auch gleich die Monatliche
Arbeitszeit berechnen.



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.

"ArbeitszeitAusString" berechnet die Arbeitszeit aus einen Text wie z.B.
"8:00 – 18:30" und gibt sie als TimeValue zurück. Du kannst sie z.B. auf
VBA-Variablen oder in der Tabelle auf einzelnen Zellen anwenden.

"ArbeitszeitAusBereich" macht im Prinzip das gleiche, nimmt als
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

Ähnliche fragen