Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeiten in VBA subtrahieren

Zeiten in VBA subtrahieren
19.07.2005 10:15:04
pascal_h
Guten Tag,
Habe ein VBA Pogramm geschrieben, welches verschiedene Zeiten subtrahiert. Dabei gebe ich aber das Interval an, ab wann subtrahiert werden soll. Bis 1 Tag geht das wunderbar, möchte ich aber ein Interval grösser als 1 Tag, dann rechnet mir vba einen Tag zuviel! Beispiel:
Interval: 02.01.1900 00:00:00 (= 2 Tage, oder nicht?)
Resultat:
Interval START: 16.02.2003 10:41:21
Interval ENDE: 19.02.2003 10:35:51
... zwischen dem START und dem ENDE liegen aber mehr als 2 Tage!
Format und alles wurde geklärt. Wie muss ich eben "2 Tage" eingeben? (anstelle von 02.01.1900 00:00:00) 48:00:00 geht übrigens auch nicht. Dann gibt es mir einen Fehler. Die Variable Interval habe ich As Date gesetzt.
Bin froh um jede Hilfe!
mfg Pascal
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeiten in VBA subtrahieren
19.07.2005 10:28:47
Matthias
Hallo Pascal,
Excel und VBA rechnen Datumswerte intern als Double, 1 entpricht einem Tag.

Sub Test()
Dim d1, d2, diff
d1 = CDate("16.02.2003 10:41:21")
diff = 2
d2 = d1 + diff
MsgBox d2
End Sub

Gruß Matthias
Vielen Dank! Klappt wunderbar!
19.07.2005 11:33:40
pascal_h
Gruss Pascal
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeiten in VBA subtrahieren


Schritt-für-Schritt-Anleitung

Um in VBA Zeiten zu subtrahieren, kannst du die folgenden Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel. Du kannst dies tun, indem du ALT + F11 drückst.

  2. Erstelle ein neues Modul: Rechtsklicke im Projekt-Explorer auf dein Projekt und wähle "Einfügen" > "Modul".

  3. Füge den folgenden Code ein:

    Sub ZeitenSubtrahieren()
       Dim d1 As Date
       Dim d2 As Date
       Dim diff As Double
    
       ' Beispielwerte
       d1 = CDate("16.02.2003 10:41:21")
       diff = 2 ' Anzahl der Tage
    
       ' Subtrahiere
       d2 = d1 + diff
       MsgBox "Das Enddatum ist: " & d2
    End Sub
  4. Passe die Werte entsprechend deiner Anforderungen an: Du kannst das Datum in d1 und die Anzahl der Tage in diff ändern.

  5. Führe das Skript aus, indem du F5 drückst oder im Menü "Ausführen" auf "Sub/UserForm ausführen" klickst.


Häufige Fehler und Lösungen

  • Problem: Das Ergebnis ist nicht wie erwartet, wenn du mehr als einen Tag subtrahierst.

    • Lösung: Stelle sicher, dass du die diff-Variable als Double definierst und den Wert korrekt eingibst. VBA behandelt Datumswerte als Double, wobei 1 einem Tag entspricht.
  • Problem: Fehler beim Eingeben von Zeitintervallen (z.B. 48:00:00).

    • Lösung: Verwende stattdessen die Anzahl der Tage, die du subtrahieren möchtest. Eingaben wie 02.01.1900 00:00:00 sind nicht korrekt, da sie nicht als Zeitintervall interpretiert werden.

Alternative Methoden

Eine alternative Methode zur Berechnung von Zeitintervallen in Excel ist die Verwendung von Formeln direkt in den Zellen:

  1. Gib das Startdatum in eine Zelle ein (z.B. A1).
  2. Gib die Anzahl der Tage in eine andere Zelle ein (z.B. B1).
  3. Verwende die folgende Formel in einer dritten Zelle (z.B. C1):

    =A1 + B1

Diese Methode ist besonders nützlich, wenn du schnell mit verschiedenen Werten arbeiten möchtest, ohne den VBA-Editor zu öffnen.


Praktische Beispiele

Hier sind ein paar praktische Beispiele, die zeigen, wie du arbeitszeiten subtrahieren kannst:

  1. Beispiel 1:

    Sub Beispiel1()
       Dim start As Date
       Dim end As Date
       start = CDate("20.03.2023 08:00")
       end = start + 3 ' Subtrahiere 3 Tage
       MsgBox "Neues Datum: " & end
    End Sub
  2. Beispiel 2:

    Sub Beispiel2()
       Dim start As Date
       Dim end As Date
       start = CDate("01.04.2023 12:00")
       end = start + 5 ' Subtrahiere 5 Tage
       MsgBox "Neues Datum: " & end
    End Sub

Diese Beispiele zeigen, wie du mit der vba ln function arbeiten kannst, um verschiedene Intervalle zu subtrahieren.


Tipps für Profis

  • Nutze die ln-Funktion in VBA, um logarithmische Berechnungen durchzuführen, wenn du diese für deine Zeitberechnungen benötigst.
  • Achte darauf, die Zeitzone zu berücksichtigen, wenn du mit Datums- und Zeitangaben arbeitest, insbesondere wenn du Daten aus verschiedenen Quellen zusammenführst.
  • Teste deine Skripte gründlich, um sicherzustellen, dass du keine unerwarteten Ergebnisse erhältst, insbesondere bei der Arbeit mit vba ln.

FAQ: Häufige Fragen

1. Wie kann ich in VBA mit Stunden und Minuten arbeiten?
Du kannst die Zeit in einem Format wie hh:mm:ss eingeben und dann die Anzahl der Stunden oder Minuten als Bruchteil eines Tages subtrahieren. Zum Beispiel: diff = 0.5 entspricht 12 Stunden.

2. Was ist der Unterschied zwischen Date und Double in VBA?
In VBA wird das Datumsformat als Double behandelt, wobei der ganzzahlige Teil die Tage und der Dezimalteil die Uhrzeit darstellt. Daher ist es wichtig, bei Berechnungen auf die korrekte Typisierung zu achten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige