Ich hab ein Problem
Ich führe einige Berechnungen mit Uhrzeiten durch und bei manchen Ergebnissen erscheint dann 1.1.1900 oder 31.12.1899 03:00
Wie kann ich das beseitigen? Was ist falsch?
Danke
Nele
Das liegt am Zahlenformat der Zelle.
Im 1. Fall enthält die Zelle Uhrzeit, ist aber mit dem Datumsformat "TT.MM.JJJJ" belegt. Im zweiten Fall ist der Zelle das Format "TT.MM.JJJJ hh:mm" zugewiesen.
Achte darauf, dass Zellen mit Uhrzeiten auch als solche formatiert sind.
Viel Erfolg,
Charlie
Also, wenn ich Zellen mit dem Format [h]:mm belege und dann z.B. einen Wert kleiner 24 (z.B. 23:10) eingebe, erhalte ich das Ergebnis sowohl in der Zelle als auch in der Bearbeitungszeile genau so angezeigt. Ist der Wert größer 24 (z.B. 25:30), dann wird das in der Zelle so angezeigt, in der Bearbeitungszeile sehe ich aber "01.01.1900 01:30:00". Warum das so ist? In Excel beginnt die Datumsberechnung mit 1900 und Excel "weiß" auch, dass ein Tag 24 Stunden hat und rechnet daher mit 1 Tag, 1 Stunde und 30 Minuten.
Wenn ich aber die Summe mehrerer Uhrzeiten bilde, dann ist das Ergebnis in der Zelle mit der Summenformel immer die genaue Uhrzeit. In der Bearbeitungszeile sehe ich dann (na eh klar) die Formel.
Ich kann Dein Problem mit dem 31.12.1899 + Stunden über 24 leider nicht nachvollziehen.
Sorry,
Charlie
Nochmal:
Wenn ich in eine Zelle mit dem Format "[h]:mm" 25:30 eingebe, dann steht in der Zelle 25:30, in der Bearbeitungszeile sehe ich aber 01.01.1900 01:30:00.
Das ist so, wenn ich den Wert direkt oder als Ergebnis einer Addition in VBA (davon war bisher nicht die Rede) in die Zelle schreibe, z.B.:
in Zelle F1 steht 12:00 und in Zelle G1 steht 13:30, dann ergibt
Range("E1") = Range("F1") + Range("G1")
in der Zelle E1 25:30, in der Bearbeitungszeile 01.01.1900 01:30:00.
Steht in Zelle F1 12:00 und in Zelle G1 10:15, dann trägt obiger Befehl in Zelle E1 22:15 ein und in der Bearbeitungszeile sehe ich 22:15:00 (ohne vorangestelltes Datum).
Das gleiche Ergebnis habe ich auch, wenn ich die Summenfunktion verwende:
Range("E1") = WorksheetFunction.Sum(Range("F1:G1"))
Als Ergebnis einer Formelberechnung in der Tabelle erhalte ich immer die korrekte Anzeige in der Zelle.
Vielleicht könntest Du mal die entsprechenden Schnipsel aus Deinem Code posten?
Gruß,
Charlie
Ich Poste mal den Teil wo ich denke das dort der Fehler drin liegt
also in der Addition der Tagstunden
With Worksheets(2)
Spalte1 = 2
Spalte2 = 2
Zeile1 = Zeile
A = 1
L = 3 * (datum())
For M = 1 To L
Sp = .Cells(Zeile1, Spalte1).Value
T = CDate(.Cells(8, Spalte2).Value)
y = Tabelle1.Zaehlen()
Zeile3 = 16
N = 1
For N = 1 To y
If Tabelle1.Cells(Zeile3, 5).Interior.ColorIndex = Tabelle1.Range("I16").Interior.ColorIndex And Tabelle1.Cells(Zeile3, 5).Value = Sp Then
Anfang = CVDate(Tabelle1.Cells(Zeile3, 6).Value)
Ende = CVDate(Tabelle1.Cells(Zeile3, 7).Value)
Nacht = Nacht_Woche(Anfang, Ende, T) + Nacht
Tag = Tag_Woche(Anfang, Ende, T) + Tag
Feier = Arbeitszeit(T, Anfang, Ende) + Feier
Sonntag1 = Sonntag(T, Anfang, Ende) + Sonntag1
End If
Zeile3 = Zeile3 + 1
Next N
Spalte1 = Spalte1 + 1
If A = 3 Then
Spalte2 = Spalte2 + 3
A = 0
End If
A = A + 1
Next M
Tabelle2.Cells(Zeile, 99).Value = Nacht
Tabelle2.Cells(Zeile, 98).Value = Tag
Tabelle2.Cells(Zeile, 100).Value = Sonntag1
Tabelle2.Cells(Zeile, 101).Value = Feier
Zeile1 = 0
Nacht = 0
Tag = 0
Feier = 0
Sonntag1 = 0
End With
Gruß Nele
Ich hab's!!
Wenn ich mich nicht irre, gefinden sich in den Zellen, die in die Variablen "Anfang" und "Ende" eingelesen werden, Uhrzeiten. Der Fehler wird durch die Umwandlungsfunktion "CDate" verursacht. Diese wandelt die Uhrzeit in ein Datum um und Du rechnest plötzlich mit "31.12.1899 ...." weiter. Lass die Umwandlung weg und lass Excel mit den seriellen Zahlen rechnen, dann funktioniert es auch.
Sollte das Problem dadurch nicht gelöst sein, kannst Du mir die Datei mailen? Da Du verschiedene Functions verwendest kann ich nämlich nicht nachvollziehen, was es damit eventuell auf sich hat.
Viel Erfolg,
Charlie
die Kalender in Excel und VBA stimmen erst ab Datum 01.03.1900
überein. Vor dem 01.03.1900 weichen sie voneinander ab!
Microsoft hat in Excel auch den 29.02.1900 integriert; doch den
hat es nie gegeben (1900 war kein Schaltjahr).
In VBA wurde dieser Fehler nicht übernommen.
Deshalb ist in Excel der 1. Tag der 01.01.1900 in VBA jedoch der
31.12.1899!! Falls Datumangaben vor dem 01.03.1900 zwischen Excel
und VBA hin- und herwandern, muß ein Tag Differenz berücksichtigt
werden.
Gruß
Sigi
Danke für Deine Info, das habe ich nicht gewußt.
Das Problem von Nele ist aber nicht darin begründet, sondern ergibt sich als Ergebnis einer einfachen Addition in VBA. Hier dürfte der Fehler durch die Umwandlung der Uhrzeiten mit CDate verursacht sein. Denn bei dieser Umwnandlungsfunktion taucht plötzlich das Datum auf, obwohl es sich - wie gesagt - bei den Angaben nur um Uhrzeiten handelt und das Ergebnis auch eine Uhrzeit sein soll(te).
"Normales" Addieren von Uhrzeiten (ohne Umwandlung) mit VBA führt ja auch zum richtigen Ergebnis.
Danke nochmals,
Charlie
Hattest Recht wegen der Umwandlung jetzt schreibt er es ordentlich hin.
Aber wegen irgendwas hat ich ja die Umwandlung gemacht, mal sehn wann er wieder meckert jetzt wo ich sie wieder weg genommen habe :o)
Aber das mit dem Datum is mir immernoch suspekt, ist mir vorher nie aufgefallen, dass das da immer steht
Gruß Nele
Es freut mich, dass wir das Rätsel lüften konnten. Mal sehen, ob die Lösung dieses Problems ein anderes wegen der jetzt fehlenden Umwandlung heraufbeschwört. Aber selbst dann kann man ja wieder eine (andere) Lösungsmöglichkeit suchen.
Da man in erster Linie nur auf die Zellen schaut und nicht auf die Bearbeitungszeile, wurdert es mich nicht sonderlich, dass es Dir bisher nicht aufgefallen ist.
Gruß,
Charlie
Zellenformat überprüfen: Stelle sicher, dass die Zellen, in denen Du Uhrzeiten eingibst, das richtige Format haben. Für Uhrzeiten verwende das Format [h]:mm
.
Summenformel verwenden: Um Stunden korrekt zu summieren, benutze die Funktion =SUMME(A1:A10)
, wobei A1:A10 der Bereich ist, in dem sich Deine Uhrzeiten befinden.
VBA-Integration: Wenn Du mit VBA arbeitest, achte darauf, dass Du keine Umwandlung mit CDate
vornimmst, da dies zu unerwünschten Datumsangaben wie 31.12.1899 führen kann.
Testen: Überprüfe Deine Eingaben. Gib beispielsweise 25:30 in eine Zelle ein und stelle sicher, dass das korrekte Ergebnis angezeigt wird.
Fehler: Zelle zeigt 31.12.1899 an, obwohl Stunden summiert werden sollen.
[h]:mm
formatiert ist und vermeide die Umwandlung bei der Berechnung.Fehler: Bei genau 24 Stunden wird 0 angezeigt.
Dreistelliges Uhrzeitformat: In einigen Fällen kann das "dreistellige" Format (z.B. 37:30:55) hilfreich sein, um die Berechnungen zu beeinflussen.
Direkte Addition: Anstatt CDate
zu verwenden, summiere die Werte direkt, um zu vermeiden, dass Excel das Datum 1.1.1900 berücksichtigt.
Beispiel 1: Wenn Du die Stunden von 12:00 und 13:30 addierst:
Range("E1") = Range("F1") + Range("G1")
Ergebnis in E1: 25:30, in der Bearbeitungszeile: 01.01.1900 01:30:00.
Beispiel 2: Um die Summe von Stunden korrekt zu berechnen, nutze:
=SUMME(F1:G1)
Dies gibt die korrekte Summe in der Zelle zurück.
Zellenformatierung: Achte darauf, dass alle Zellen, die Uhrzeiten enthalten, richtig formatiert sind, um Missverständnisse mit Excel-Daten zu vermeiden.
Fehlerdiagnose: Nutze die Bearbeitungszeile, um zu sehen, ob Excel möglicherweise Datumsangaben anzeigt, die Du nicht erwartet hast.
VBA-Skripte: Wenn Du in VBA arbeitest, halte Dich an die Grundregeln der Zeitberechnung und vermeide unnötige Umwandlungen.
1. Warum zeigt Excel 31.12.1899 an?
Das Datum 31.12.1899 wird angezeigt, wenn die Summe der Stunden 24 oder mehr beträgt, da Excel mit serialisierten Datumswerten arbeitet.
2. Wie kann ich sicherstellen, dass meine Stunden korrekt summiert werden?
Verwende das Format [h]:mm
für die Zellen und summiere die Werte direkt oder verwende die SUMME
-Funktion in Excel.
3. Was kann ich tun, wenn ich mit VBA arbeite und die Zeitangaben nicht korrekt sind?
Vermeide die Umwandlung der Uhrzeiten mit CDate
und arbeite stattdessen direkt mit den Zellen, um die korrekten Werte zu erhalten.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen