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