also lange Geschichte kurz, per VBA werden Daten aus verschiedenen Quellen aufbereitet. Hierbei ist ein Datensatz bestehend aus SSCC, z.D. NVE.
NVE Nummern sind idR größer 15 Stellen, soweit so gut. Die NVE stehen in einer Zelle (pro Auftrag) sauber getrennt per ",'" das "," als Trenner, das ' als Qualifier.
Nun soll per Text in Spalten die NVE sauber auf die Zellen verteilt werden. Läuft auch!
Zur Verbesserung der usability soll nun möglichst das Apostroph entfernt werden.
Gebe ich Text in Spalten das Apo. als Qualifier mit, wandelt Excel, beim Aufteilen der NVE auf die einzelnen Zellen, die Nummer in eine 15-Stellige um. Sprich die letzten Ziffern werden genullt. Dabei ist es völlig egal, ob ich vorher im Makro Code die Ziel-Spalten auf Text formatiere.
Auch ist egal, wenn ich im Code für TextinColumns die Array Info 1,2 (Text) mitgebe. Excel kürzt die Zahl. Ist für mich auch soweit logisch, da der Compiler zuerst den Qualifier löscht. Anschließend schaut er sich den Trenner an und wird dann die einzelnen Werte auf die Zellen aufteilen. Während genau dieses Vorganges (exportieren der Einzelwerte) wird der Compiler die Zahl als INT behandeln und entsprechen kürzen. Hund und Schwanz... Da das geschieht, bevor er die INT dann in die einzelnen Zellen einfügt, ist das Format der Array-Ziel-Zellen herzlich egal.
Der vorgesehene Weg wäre diese Zahlen vorher als Double oder String zu definieren.
Dafür sieht TexttoColoumns aber keine Standardmöglichkeit vor. Zumindest kenne ich keine. Der Bug besteht meiner Meinung nach darin, dass die zu Nutzenden Variablen in der Funktion TexttoColoumns nicht per se als String behandelt werden. Anscheinend erkennt der Compiler Zahlenwerte und wandelt diese entsprechend als INT bevor er sie verwendet.
Das mag der Geschwindigkeit und auch in vielen Fällen durchaus hilfreich sein. In meinem speziellen Fall führt es aber leider zum gegenteiligen Ergebnis.
Gibts irgendwelche Ideen oder bekannte workarounds?