Negative Zeiten in Excel via vba in ein anderes Tabellenblatt übertragen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich kann den Fehler bei mir leider nicht rekonstruieren. Wenn ich über VBA die -670:40 Stunden von einem Tabellenblatt ins andere kopiere, kommen da auch die -670:40 Stunden an (bzw. -27,944444 Tage, wenn man das Format noch nicht eingestellt hat)

Was ich mir vorstellen kann ist, dass Excel sich beim Kompilieren des Codes irgendwo verschluckt hat. Ich hab damals ziemlich viel in Access VBA programmiert und da gab es die Option, dass man die Datenbank mit dem Befehlszeilenparameter /decompile öffnen konnte. Dadurch hat VBA den ganzen kompilierten Code gelöscht und alles neu kompiliert. Das hat meistens geholfen. Bei Excel gibt es die Option leider nicht.

Probiere mal, ob es über den manuellen Weg geht. Also du nimmst dir eine neue Excel-Datei und kopierst die Tabellenblätter und die Quellcodes da rüber. Dann wird der Code einmal frisch kompiliert und es könnte sein, dass es danach wieder wie gewohnt funktioniert.

maexchen1999 
Fragesteller
 31.08.2023, 18:13

Wie hast Du den Befehl va VBA programmiert?

0
daCypher  31.08.2023, 21:39
@maexchen1999
Sheets("Tabelle2").Range("A1") = Sheets("Tabelle1").Range("B1")

Im Direktbereich. Also vom Code im Prinzip das, was du auch gemacht hast, nur eben ohne eine umfangreiche Tabelle zu haben.

Ich hatte in A1 die 670:40 Stunden stehen und in B1 die Formel =-A1

Hab vorher auch versucht in A1 direkt die -670:40 einzugeben, aber da hat Excel dann versucht, die Zeilen 40 bis 670 zu negieren und als Matrixformel auszugeben, was aber zu einem Überlauf-Fehler geführt hat, weil das Ergebnis natürlich nicht in 40 Zeilen gepasst hätte.

0
maexchen1999 
Fragesteller
 31.08.2023, 22:54
@daCypher

Ja, genau das hatte ich auch. Ich habe das Szenario in einer anderen Datei nachgestellt, da hat es problemlos funktioniert. Ich wollte auch die Tabellenblätter in eine neue Datei kopieren, aber das wäre relativ kompliziert, weil ich da ziemlich viele Formatierungen, unterschiedliche Spaltenbreiten usw. habe. Ich bekomme leider auch keine wirklich aussagekräftige Fehlermeldung. Kann ich Dir ev. per PN schreiben?

0
maexchen1999 
Fragesteller
 01.09.2023, 01:25
@maexchen1999

Dank Deiner Hilfe habe ich es schlußendlich geschafft! Das Problem war nicht die Codezeile mit dem Kopieren, sondern die Reihenfolge im Code! Jetzt funktioniert es! Vielen Dank nochmals! 🙂👍

1

Moin,

(Nein, ich kann dir eher nicht helfen, VBA ist weniger mein Fall!)

nur so als Neugier: Wie machst du deine Negativen Zeiten denn ?

Über 1904 Datumsformat oder über Text und Rechentricks (Also über Formeln ?

Grüße

Woher ich das weiß:eigene Erfahrung
maexchen1999 
Fragesteller
 30.08.2023, 21:47

1904 Format

0
Fleischtester  30.08.2023, 22:01
@maexchen1999

Moin,

dann muss die neue Tabelle natürlich auch 1904 Datumsformat haben und auch die Variable in VBA mit der du das überträgst muss das auch können! ..

Grüße

0
maexchen1999 
Fragesteller
 30.08.2023, 22:03
@Fleischtester

So schlau war ich auch, aber ich wüsste nicht, was das 1904 Format mit der Deklaration einer Variable zu tun haben sollte.

0
Fleischtester  30.08.2023, 22:08
@maexchen1999

Moin,

dann weist du bestimmt das folgende auch:

Excel speichert alle Datumswerte als Zahlen. Im Normaler Format werden sie von 1900 an gerechnet und im 1904 Format halt von 1904 an. (Neben den möglichen Zusatzfunktionen) Diese Zahl muss genauso in eine Variabel übertragen werden und dann genauso in die neue Excel-Tabelle kommen um dort wieder genauso interpretiert zu werden. Wird die Zahl auf den Weg irgendwie umgewandelt und dann bei der nächsten Umwandlung falsch umgewandelt, kommt etwas anderes raus. (Das müsstest du vielleicht überprüfen, z.B. in dem du dir in allen Schritten deines Script ein dir bekanntes Ergebnis per MSGBox ausgeben lässt!) ...

Grüße

0