Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1696to1700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ist mindestens 35 h durchgehende Ruhezeit vorhand

Ist mindestens 35 h durchgehende Ruhezeit vorhand
19.06.2019 11:41:47
STeve
Schönen Vormittag liebe Helfer/Könner.
Bräuchte schon wieder eure Idee/Lösung (VBA).
Ich lese kalenderwochenweise Arbeitszeiten aus. Kalendertage mit Normalstunden (schwarz) und Überstunden (rot)
Jetzt bräuchte ich einen Code der prüft ob mindestens 35 h durchgehende Ruhezeit vorhanden ist.
Bei eingetragenen Begriffen wie "NZG", "SU", "PFU", "U" usw. wird dir Ruhezeit von 00:00 - 24:00 unterbrochen.
Hier eine Datei mit so e i n e r extrahierten Kalenderwoche mit Erklärungen.
https://www.herber.de/bbs/user/130482.xls
Besten Dank für eure Zeit und Hilfe
mfg STeve

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ist mindestens 35 h durchgehende Ruhezeit vorhand
19.06.2019 16:00:28
ChrisL
Hi
In der Beispieldatei müsstest du die Kommentare unten löschen, damit der Beispielcode funktioniert.
Zudem ändert der Code alle 00:00:00 am Ende vom Tag in 23:59:59. Null-Uhr wäre nach meiner Logik bereits am Folgetag.
Sub t()
Dim iSpalte As Integer, iZeile As Integer
Dim cStunden As Currency, bEingehalten As Boolean
' Datenbereinigung
For iSpalte = 1 To 7
If Cells(Rows.Count, iSpalte).End(xlUp) = 0 Then _
Cells(Rows.Count, iSpalte).End(xlUp) = TimeSerial(23, 59, 59)
Next iSpalte
' Berechnung
For iSpalte = 1 To 7
If WorksheetFunction.Count(Range("A3:A100").Offset(0, iSpalte - 1))  _
WorksheetFunction.CountA(Range("A3:A100").Offset(0, iSpalte - 1)) Then
cStunden = 0
Else
If WorksheetFunction.CountA(Range("A3:A100").Offset(0, iSpalte - 1)) = 0 Then
cStunden = cStunden + 1
If cStunden >= 35 / 24 Then
bEingehalten = True
Exit For
End If
Else
cStunden = cStunden + WorksheetFunction.Min(Range("A3:A100").Offset(0, iSpalte - 1))
If cStunden >= 35 / 24 Then
bEingehalten = True
Exit For
End If
cStunden = 1 - WorksheetFunction.Max(Range("A3:A100").Offset(0, iSpalte - 1))
End If
End If
Next iSpalte
MsgBox bEingehalten
End Sub
cu
Chris
Anzeige
Danke - klappt
20.06.2019 08:51:27
STeve
Guten Morgen lieber Chris........wieder einmal hast du mein Problem gelöst. Tausend Dank für deine Zeit und Hilfe/Können.
PS: Wieder seeeehr viel Neues für mich. :-).Wird Tage dauern um zu verstehen wie der Code funktioniert und ihn in die Orginaldatei einzubauen!!!
Hoffe kann mich melden wenn ich es nicht schaffe.
Dir noch einen schönen Tag und
mfg
STeve

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige