Hallo,
ich habe den Code jetzt mal so erweitert, dass ein paar Fehler abgefangen werden.
Somit sollte immer ein Wert als Datum zurückgegeben werden, auch wenn er Null ist.
1 2 3 4 5 6 7 8 9 10 11 12 13 | Public Function UmwandelnZeit(Zeit As String ) As Date
Dim x() As String
Dim negativ As Integer
If Zeit <> "" Then
negativ = IIf(Left(Zeit, 1) = "-" , -1, 1)
x = Split(Zeit, ":" )
If UBound(x) = 3 Then
UmwandelnZeit = Sgn(negativ) * (Abs(x(0)) + TimeSerial(x(1), x(2), x(3)))
End If
End If
End Function
|
Aber ich vermute mal deine Probleme rühren woanders her.
Eine mögliche Ursache:
Ich habe mir nicht die Mühe gemacht, deine Code-stücke nachzuvollziehen.
Aber es kommt des öffteren so was vor:
Selection.Delete Shift:=xlToLeft
Wann du natürlich Spalten löscht, hat Excel ein Problem, wenn eine Formel zuvor genau aus der Spalte was holen wollte.
In der Formel müsste dann !Bezug stehen.
Dann hast du im Blatt Monitor Spalten hinzugefügt. In Spalte SOLL-AVIS (Spalte R) steht aber immer noch
=H2-(K2-M2)
die "Tolleranz" also die 10 Minuten die du abziehen möchtest ist aber durch das Einfügen gewandert nach Spalte Q
Deine bedingte Formatierungen passen auch nicht mehr, gleiches Problem, Spalte M ist zu Spalte Q geworden.
Allerdings verstehe ich nicht warum in der bedingten Formatierung noch M steht, da Excel so inteligent ist, und beim Einfügen von
Spalten dies dann gleich berücksichtigt. (Ich vermute mal du hast das dann einfach von einem alten Stand eingefügt)
Zudem hast du sehr viele bedingte Formatierungen auf dem Blatt, die meißt das selbe machen, aber immer auf einen anderen
Bereich gültig sind.
An deiner Stelle würde ich mir eher Gedanken machen, ob du das Importieren nicht änderst.
Und zwar so, dass du beim Importieren gleich die "komischen" Zeitwerte (00:00:00:00) in richige Datum/Zeit-Werte umwandelst.
Spalten die nicht gewandelt werden müssen kannst du ja auf einmal kopieren und Einfügen, aber Spalten die umgewandelt gehören,
würde ich Zelle für Zelle übertragen und dabei (mit der Funktion) umwandeln.
Oder es gibt auch noch andere Wege zu Importieren. (aber das würde jetzt den Rahmen sprengen.
Und ich würde nicht immer "Alles" einfügen sondern nur die Werte.
Also nicht Selection.Paste, sondern eher so was Range(" A2").PasteSpecial Paste:=xlPasteValues
Vorteil wäre halt, du könntest dir das ganze Formatieren und Formeln neue einfügen etc auf den Blättern ersparen.
Dann noch was:
Du schreibst oft so was in der Art.
Range("A1:I1").Select
Selection.Font.Bold = True
Das macht den Code aber unnötig lang, schlecht zu lesen und langsam, denn das Select benötigt man so gut wie nie.
es geht auch so:
Range("A1:I1").Font.Bold = True
|