Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Hilfe bei DateDiff

Begonnen von Truckerling, Februar 20, 2017, 20:38:52

⏪ vorheriges - nächstes ⏩

Truckerling

Hallo,

bin neu hier.

Kann mir jemand den nachfolgenden VBA-Code analysieren?
Die Funktion macht nicht das, was ich will.


Public Function CalcDiffTime(ByVal TimeS, ByVal TimeE, ByVal TimeP)
If IsNull(TimeS) Or IsNull(TimeE) Then Exit Function
If TimeS > TimeE Then
TimeE = TimeE + 1 - Nz(TimeP, 0)
End If
CalcDiffTime = DateDiff("n", (TimeS), (TimeE)) / (60 * 24)

End Function


Danke

MzKlMu

Hallo,
verrätst Du auch was die Funktion machen soll ?
Gruß Klaus

PhilS

Zitat von: Truckerling am Februar 20, 2017, 20:38:52bin neu hier.
Herzlich willkommen!
Zitat von: Truckerling am Februar 20, 2017, 20:38:52Die Funktion macht nicht das, was ich will.
Dann solltest du uns auch verraten, was du willst!

Programcode kann man übrigens mit dem #-Button hier im Forum besser lesbar formatieren.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Truckerling

Also, die Funktion läuft im Ausdrucksgenerator zur Anzeige von Arbeitszeiten in einem Bericht.
TimeS ist die Startzeit, TimeE die Endzeit und TimeP die Pausenzeit.
Der Bereich TimeS bis TimeE abzüglich TimeP ergibt die Arbeitszeit.
Erforderlich wurde die Funktion durch die Variante, das bsp 20:00 begonnen wird und 03:00 am nächsten Tag geendet wird und dazwischen 1,0 Std Pause ist.
Das ist die Anforderung.
Leider erhalte ich als Ergebnis nur die Differenz von TimeS und TimeE. TimeP wird nicht abgezogen. Wo liegt der Fehler?

Danke soweit

daolix

hallo

liegt wahrscheinlich daran das Pause nur berücktsichtigt wird wenn Start grösser Ende ist.
probier halt mal

Public Function CalcDiffTime(ByVal TimeS, ByVal TimeE, ByVal TimeP)
If IsNull(TimeS) Or IsNull(TimeE) Then Exit Function
If TimeS > TimeE Then
TimeE = TimeE + 1
End If
CalcDiffTime = DateDiff("n", (TimeS), (TimeE  - Nz(TimeP, 0))) / (60 * 24)

End Function

Truckerling

Funktioniert. Dankeschön.