2017-06-27 2 views
0

Ich bin neu in dieser Community, also bitte kritisieren Sie alles, was Sie wollen, auf diesem Post, wenn ich irgendwelche Anfängerfehler mache.VBA - Dezimal zu Zeit - Falscher Wert egal

Ich bin derzeit auf eine Aufgabe fest. Ich bin etwas neu in Visual Basic, aber mein Verständnis war bisher ziemlich gut. Ich kann jedoch anscheinend keine grundlegende Operation sortiert bekommen. Ich habe das Internet durchsucht und habe jetzt für ein oder zwei Tage meinen Kopf gegen die Wand geschlagen. Hoffentlich können Sie mir helfen, dies zu klären.

Ich importiere Zykluszeiten für verschiedene Aufträge aus einer Oracle-Datenbank. Sie werden in einer Spalte als Dezimalwerte (Anzahl der Stunden) zurückgegeben, aber ich möchte, dass sie als "Lange Zeit" ("hh: mm: ss") angezeigt werden. Was ich gelesen habe, sollte so einfach sein wie das Teilen durch 24 und das Ändern des Formats. Dies führt jedoch zu falschen Werten bei der Verwendung der Zellenwerte.

Beispiel:

? ws.Cells(i,6) 'Cycle times are placed in column 6 while looping over rows i. 
0.050000 
? Format(0.050000/24, "hh:mm:ss") 
00:03:00 

aber

? Format(ws.Cells(i,6)/24,"hh:mm:ss") 
08:00:00 

, die eindeutig nicht korrekt ist. 0,05 Stunden entsprechen 3 Minuten. Ich habe eine Änderung der Datumswert beobachtet auch:

? Format(0.05/24, "yyyy-mm-dd hh:mm:ss") 
1899-12-30 00:03:00 

? Format(ws.Cells(i,6)/24, "yyyy-mm-dd hh:mm:ss") 
1905-09-13 08:00:00 

Wie ist das überhaupt möglich !?ws.Cells(i,6) gibt 0,05 zurück. Trotz dieser Format(ws.Cells(i,6)/24,"hh:mm:ss")Format(0.05/24,"hh:mm:ss")

habe ich versucht, Herumspielen mit Zahlenformate (Strings, Daten etc.), .Value und .Value2

Weiß jemand, was los ist und warum dies geschieht?

Vielen Dank für Ihre Zeit im Voraus.

+0

'? Format (ws.Cells (i, 6)/24, "hh: mm: ss") 'gibt mir' 00: 03: 00' –

+0

Versuchen Sie, das in einer neuen Arbeitsmappe manuell einzugeben und zu sehen, ob Sie das gleiche Ergebnis erhalten? –

+0

Ist der Wert von "i" gleich, wenn Sie es tun? ws.Cells (i, 6) 'und wenn du es tust? Format (ws.Cells (i, 6)/24, "hh: mm: ss") '? Es ist auch interessant, dass es "0.050000" und nicht "0.05" als Antwort auf "?" Zeigt. ws.Cells (i, 6) '. – YowE3K

Antwort

0

Das Problem scheint von der Tatsache herrühren, dass Ihr Computer denkt, dass 0.050000 ist nicht eigentlich die Nummer 0.05, aber ist eigentlich eine Zeichenfolge, die als 50000 interpretiert wird.

Wenn Sie also 50000 durch 12 teilen, erhalten Sie das Datum/die Uhrzeit 1905-09-13 08:00:00, die dann nur als 08:00:00 angezeigt wird, wenn ein "hh:mm:ss" Format verwendet wird.

Ich denke, Sie müssen überprüfen Sie Ihre Datum/Uhrzeit & Spracheinstellungen, um sicherzustellen, dass sie richtig eingestellt sind.

+0

Korrigieren. Dies war in der Tat der Fall. Meine Lösung bestand darin, das '. 'In den Zellen durch', 'zu ersetzen. Wenn ich nicht auf mehrere dieser Situationen stoße, möchte ich mich nicht mit den Standardeinstellungen herumschlagen. Vielen Dank! – Smartskaft2