Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Leerzeichen vor Zahl einfügen

VBA: Leerzeichen vor Zahl einfügen
05.02.2016 19:36:59
Jens
Moin,
ich habe ein Problemchen beim Einfügen von Leerzeichen vor Zahlen.
Das Makro importiert eine Textdatei und schreibt den Inhalt Zeile für Zeile in die Arbeitsmappe. Dabei gehen die Leerzeichen vor den Elementen verloren. Am Ende des Makros muss ich nun noch diese Leerzeichen wiederherstellen um die Syntax des Inhalts zu gewährleisten. Abschließend wird diese wieder mittels msdos Format (ansi-Codierung) abgespeichert.
Zellen in denen Zahlen wie 12,15 stehen bekomm ich keine Leerzeichen vorgeschoben.
Mit Texte-Elementen funktioniert das ganz einfach:
Cells(23, 1) = Space(2) & Cells(23,2)
Mach ich das so mit der Zahl erhalte ich in der Text Datei meine Zahl mit 2 Leerzeichen, aber in Anführungszeichen gesetzt, die beim Speichern entstehen, aber nicht sein dürfen: " 12,15"
Die Anführungszeichen entstehen weil in der Zahl ein Komma ist. Ersetze ich nun das Komma mittels replace() Funktion löscht er die Leerzeichen oder ignoriert sie. Ich habe auch bereits das Space() durch " " versucht zu ersetzen, aber nichts hat geholfen.
Ich hoffe mir kann jemand helfen
mfg Jens

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Leerzeichen vor Zahl einfügen
05.02.2016 19:50:22
Piet
hallo
ich weiss nicht ob ich helfen kann, sage aber mal was ich versuchen würde. Ohne Gewaehr!
ich weiss nicht ob es sinnvoll ist die Spalte vor dem Laden der Datei als -Text- zu formatieren.
eine zweite Lösung die ich gelegentlich probiere ist vor dem Space ein Semikolon sezten! z.B.:
Cells(1,1) = "'" & Space(3) & Text Ich weiss nicht ob es dir hilft, einfach mal ausprobieren.
mfg Piet

Anzeige
AW: VBA: Leerzeichen vor Zahl einfügen
05.02.2016 20:04:26
Daniel
Hi
Excel prüft bei jeder Eingabe, ob die Eingabe eine Zahl, ein Datum oder eine Formel sein könnte und wandelt dann die Eingabe in den entsprechenden Wert um.
für die Prüfung werden führende und folgende Leerzeichen ignoriert, dh " 123 " wird in die Zahl 123 gewandelt und die Zahl hat keine Leerzeichen.
die zwei Lösungsmöglichkeiten hat Piet schon beschrieben:
a) die Zellen VOR der eingabe mit dem Zahlenformat TEXT zu formatieren
b) bei der Eingabe das Texterkennungszeichen "'" an den Anfang zu stellen.
du kannst aber schon beim Einlesen der Textdatei das Umwandeln in eine Zahl verhindern.
hierzu musst du die Textdatei über den Importassistenten öffnen (Daten - externe Daten - aus Text) und dann im Schritt 3 des Assistenten für die entsprechenden Spalten das Datenformat TEXT festlegen.
Gruß Daniel

Anzeige
AW: VBA: Leerzeichen vor Zahl einfügen
06.02.2016 00:18:41
Jens
Nabend,
danke für eure Hilfe, der Daten Import bei mir findet mittels QueryTables.Add statt. Darunter konnte man noch einige Eigenschaften setzen wie Textformat und Fileplatform wodurch es jetzt läuft.
'Heureka'
mfg Jens
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Leerzeichen vor Zahl einfügen


Schritt-für-Schritt-Anleitung

  1. Importiere die Textdatei: Verwende QueryTables.Add, um die Textdatei in Excel zu importieren.

  2. Setze die Eigenschaften: Achte darauf, die Eigenschaften wie Textformat und Fileplatform zu setzen, um sicherzustellen, dass Excel die Daten im richtigen Format behandelt.

  3. Füge Leerzeichen hinzu: Um Leerzeichen vor den Zahlen einzufügen, kannst du die folgende Zeile verwenden:

    Cells(23, 1) = Space(2) & Cells(23, 2)

    Beachte, dass dies bei Zahlen möglicherweise nicht wie gewünscht funktioniert, da Excel die Zahlen automatisch formatiert.

  4. Verhindere die automatische Umwandlung: Um zu verhindern, dass Excel die Zahl umwandelt, kannst du die Zelle vorher als Text formatieren oder ein Apostroph (') vor die Zahl setzen:

    Cells(1, 1) = "'" & Space(2) & Cells(1, 2)
  5. Speichere die Datei: Stelle sicher, dass du die Datei im ANSI-Format speicherst, um die Leerzeichen beizubehalten.


Häufige Fehler und Lösungen

  • Problem: Anführungszeichen um die Zahl bei Leerzeichen.

    • Lösung: Verwende das Apostroph (') vor der Zahl, um Excel zu signalisieren, dass es sich um Text handelt.
  • Problem: Leerzeichen werden beim Import ignoriert.

    • Lösung: Formatieren die Spalte vor dem Import als Text oder nutze den Importassistenten, um die Daten als Text zu importieren.

Alternative Methoden

Wenn du Leerzeichen zwischen Zahlen einfügen möchtest, kannst du auch die TEXT-Funktion verwenden oder die Zellen manuell formatieren. Eine weitere Methode ist die Verwendung von REPLACE, um Kommas durch Leerzeichen zu ersetzen, ohne Anführungszeichen zu erzeugen.

Beispiel:

Cells(1, 1) = Replace(Cells(1, 2), ",", " ")

Praktische Beispiele

  1. Leerzeichen vor Zahlen:

    For i = 1 To 10
       Cells(i, 1) = Space(2) & Cells(i, 2)
    Next i
  2. Import von Daten:

    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\dein\pfad\datei.txt", Destination:=Range("A1"))
       .TextFileConsecutiveDelimiter = False
       .TextFileTabDelimiter = True
       .TextFileColumnDataTypes = Array(1) 'Spalte als Text formatieren
       .Refresh
    End With

Tipps für Profis

  • Verwende VBA-Fehlerbehandlung: Implementiere Fehlerbehandlung in deinem Makro, um unerwartete Probleme zu lösen.

  • Datenüberprüfung: Füge Validierungsregeln hinzu, um sicherzustellen, dass die importierten Daten das gewünschte Format haben.

  • Makros optimieren: Reduziere die Anzahl der Berechnungen und Aktualisierungen im Hintergrund, um die Ausführungsgeschwindigkeit deiner Makros zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass Excel Leerzeichen vor Zahlen beibehält?
Du kannst die Zellen vor der Eingabe als Text formatieren oder ein Apostroph (') vor die Zahl setzen.

2. Warum ignoriere Excel Leerzeichen?
Excel behandelt führende und folgende Leerzeichen bei der Eingabe von Zahlen nicht. Verwende die genannten Methoden, um dieses Verhalten zu umgehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige