Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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

Rest und Module

Rest und Module
24.05.2020 23:14:58
JZ2000
Servus Leute,
Mal eine Frage. Mein Suche hat leider nichts passendes ergeben.
Ich möchte die Stunden von 22:00 Uhr bis 01:00 Uhr. Das Ergebnis muss also 03:00h sein
Als Formel im Blatt funktioniert es gut mit =REST(A2-A1;1)
Da REST ja der Überbleib einer Division ist, habe ich es mit Modulo in VBA versucht sprich:
Sub Test ()
Dim DateA1 As Date
Dim DateA2 As Date
Dim Dategesamt as Date
DateA1 = "22:00"
DateA2 = "01:00"
Dategesamt = (DateA2 - DateA1) Mod 1
End Sub
Als Ergebnis erhalte ich dabei jedoch 0 . Kann mir da jemand helfen?
Vielen dank schonmal im voraus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rest und Module
24.05.2020 23:33:52
JZ2000
Anmerkung:
Man Kann es folgendermaßen lösen
Sub Test()
Dim DateA1 As Date
Dim DateA2 As Date
Dim Dategesamt As Date
DateA1 = "01.01.2020 22:00"
DateA2 = "02.01.2020 01:00"
Dategesamt = DateA1 - DateA2
End Sub
Aber ich finde das nicht Optimal. hat jemand eine "sauberere" Lösung?
AW: Rest und Module
24.05.2020 23:40:52
Daniel
Hi
VBA-Funktionen sind nicht immer ganz genau gleich wie ihre Excelkollegen, manchmal gibt es kleine Unterschiede.
Wenn man da sicher gehen will dass es in VBA auch ganz genauso funktioniert wie in der Excelformel, sollte man, falls vorhanden, die WorkSheetFunction-Variante der Funktion verwenden.
Ich würde hier allerdings einfach 1 zum Ergebnis hinzuaddieren, falls A2 kleiner A1 ist.
Das ist jetzt nicht so elegant wie Rest/Mod, bildet aber die Realität besser ab, denn dann liegt A2 am nächsten Tag, was durch das +1 dargestellt wird.
Würdest du nämlich die Zeiten vollständig mit dem dazugehörigen Datum angeben, würde die einfach Differenzbildung ausreichen. So musst du den Umstand, dass A2 am nächsten Tag liegt, simulieren.
DateGesamt = DateA2 - (DateA2 
Man kann das hier so verkürzt schreiben, weil ein True in VBA wie -1 und ein False wie 0 verwendet wird.
Wenn man das nicht kennt oder es um andere Zahlen als 0 und 1 geht, auch so:
DateGesamt = DateA2 + IIf(DateA2 
Gruß Daniel
Anzeige
AW: Rest und Module
24.05.2020 23:51:47
JZ2000
Danke Daniel für deine schnelle Antwort.
Vor allem um die Uhrzeit.
Ich habs probiert funktioniert einwandfrei und macht Sinn.
Immer wieder erstaunlich was die Leute so alles drauf haben
Bis zum nächsten mal und
Vielen Dank
AW: Rest und Module
25.05.2020 10:04:10
Sigi
Hallo,
die VBA-Fkt. MOD liefert immer den Rest einer ganzzahligen(!) Division. Deine Uhrzeiten sind Dezimalbrüche zwischen 0 und 1. Auch nach einer Subtraktion (DateA2 - DateA1) wird auf eine ganze Zahl gerundet bevor MOD den Rest ermittelt.
MOD hat auch die Einschränkung, dass sie nur Zahlen bis zur Größe des Long-Typs verarbeitet.
Die Excelfunktion Rest() kann auch bei Dezimalbrüchen den Rest ermitteln. Allerdings muss man dann mit den Fallstricken der Gleitkommaarithmetik leben. Streng genommen hat Rest() wenig mit MOD gemeinsam.
Sigi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige