Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Alle Arten von Leerzeichen von String entfernen

Alle Arten von Leerzeichen von String entfernen
26.01.2017 21:57:42
Leerzeichen
Hallo,
ich bin neu hier und hoffe, Ihr könnt mir weiterhelfen.
Ich möchte gerne alle Arten von Leerzeichen von einem variablen String als Teil eines Makros entfernen.
Bisher habe ich dazu folgende Zeile: strString = Replace(strString, " ", "") Meines Wissens gibt es aber auch noch andere Arten von Leerzeichen, die man optisch aber nicht unterscheiden kann, z.B. durch manuelles Einfügen von Text etc. Ich meine, es handelt sich dabei um \r und \n etc.
Kann mir jemand sagen, wie ich alle diese Arten von Leerzeichen entfernen kann ?
Entweder aus einem String (dann muss ich durch alle Werte einer Spalte loopen) oder - falls das schneller läuft - für alle Werte einer Spalte.
Vielen Dank im Voraus für Eure Hilfe.
VG,
Mike
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Arten von Leerzeichen von String entfernen
26.01.2017 22:08:37
Leerzeichen
Hallo,
Leerzeichen am Anfang und am Ende eines Strings kannst du mit der Funktion Trim() entfernen.
Also so:
str = " Test "
strString = Trim(str) ' Ergibt: strString = "Test"
AW: Alle Arten von Leerzeichen von String entfernen
26.01.2017 22:11:52
Leerzeichen
Hallo Marc,
vielen Dank für die schnelle Antwort !
Es betrifft tatsächlich nur Leerzeichen am Anfang und Ende des Strings.
Greift Trim bei allen Arten von Leerzeichen und auch bei mehreren Leerzeichen hintereinander ?
VG,
Mike
Anzeige
AW: Alle Arten von Leerzeichen von String entfernen
26.01.2017 22:14:14
Leerzeichen
Was meinst du mit allen Arten von Leerzeichen?
Trim löscht ALLE führenden und folgenden Leerzeichen.
Sieh dir dazu einfach mal die String-Funktionen an. Da findest du noch einige mehr.
AW: Alle Arten von Leerzeichen von String entfernen
26.01.2017 22:16:57
Leerzeichen
Hallo Marc,
das habe ich im Post beschrieben. :)
Beim manuellen Einfügen von Text entstehen ggf. andere Leerzeichen, als beim Drücken der Leertaste, eben z.B. \r und \n, die aber optisch nicht zu unterscheiden sind.
Ich muss nur sicher sein, dass ich damit wirklich alle Leerzeichen vor und nach dem String entferne.
VG,
Mike
Anzeige
AW: RegEx
26.01.2017 22:14:54
Fennek
Hallo,
es gibt mehrere Arten: z.B. chr(160), Tab.
Ein Weg wäre mit RegEx nach
.Pattern "\s"
zu suchen und dann durch "" zu erstzen.
mfg
AW: Alle Arten von Leerzeichen von String entfernen
26.01.2017 22:21:31
Leerzeichen
Hallo Mike,
wenn du das Leerzeichen 160 entfernen möchtest, dann evtl. so:
Option Explicit
Sub chr160_weg()
Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
End Sub
Gruß Peter
Anzeige
Deine FrageKonkreta lassen mich darauf ...
27.01.2017 02:22:46
Luc:-?
…schließen, Mike,
dass es sich bei deinem String nicht um normalen, sondern anderweitig vorformatierten Text handelt. Ich vermute, dass er im RT-Format o.ä. vorliegt. Darauf lassen deine Angaben \r und \n für spezielle Leerzeichen schließen. Diese liegen dann evtl gar nicht direkt im Text vor, sondern wdn über diese Codes generiert. In HTML ist das auch so bei Angaben wie  ,   u.a.
Falls dieses annähernde Dtzd verschiedener typografischer Zwischen­räume aber tat­sächlich physisch als ASCII- bzw UniCode-Zei­chen vorliegt, kommt es ganz darauf an, ob stets alle diese Zeichen entfernt wdn sollen. Die vbFkt Trim entfernt nur normale Leer­zei­chen (Code32) am Anfang und Ende eines Textes, die WorksheetFunction.Trim (GLÄTTEN) ersetzt zusätzlich noch mehr­fache Leer­zeichen im Text durch einfache, die Worksheet­Function.Clean (SÄUBERN) entfernt nicht­druck­bare Zeichen, wozu diese Leer­zeichen eigentl nicht gehören.
Also wird es wohl am sichersten/einfachsten sein, wenn du in jedem Text nur die Zeichen bewahrst, die stets auftreten dürfen, und alle anderen entfernst. So etwas macht meine UDF MaskOn, die aber in der hier vorliegenden Version alle unerwünschten Zeichen durch nur ein normales Leerzeichen ersetzt. Falls das auch entfallen soll, kann das mit dem von dir gezeigten Code geschehen.
Kann das Entfernen aber auf wenige bestimmte Zeichen eingeschränkt wdn, können dafür auch Kombinationen anderer, im Archiv vorhandener UDFs (zB VSplit/SplitVx und VJoin), verwendet wdn.
Liegt der Text aber in einem anderen Format vor, weil er nicht in das Xl-Format konvertiert wurde bzw wdn konnte, müsste zusätzlich zu Leerzeichen auch nach den o.g. Forma­tierungs­steuer­zeichen gesucht wdn.
Gruß, Luc :-?
Besser informiert mit …
Anzeige
Alle Arten von Leerzeichen
27.01.2017 06:25:16
Leerzeichen
Moin!
Mal eine Aufstellung der mir bekannten "alternativen Leerzeichen":
 BE
1BeschreibungNCR dez.
7erzwungenes Leerzeichen 
234Leerzeichen Breite n 
235Leerzeichen Breite m 
236Schmales Leerzeichen 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Das schmale Leerzeichen sprichst Du folglich mit ChrW(8201) an.
Gruß Ralf
Anzeige
AW: Bsp-Text
27.01.2017 08:52:24
Fennek
Hallo,
wie gesagt, kann es so viele verschiedene Arten von leerzeichen geben, dass ein Beispiel helfen würden, konkreter zu antworten.
mfg
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Alle Arten von Leerzeichen von String entfernen


Schritt-für-Schritt-Anleitung

Um alle Arten von Leerzeichen aus einem String in Excel VBA zu entfernen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle "Einfügen" > "Modul".
  3. Füge den Code ein: Kopiere den folgenden VBA-Code in das Modul.
Option Explicit

Sub LeerzeichenEntfernen()
    Dim strString As String
    Dim i As Long

    ' Beispielstring
    strString = "   Beispiel  Text  mit   Leerzeichen   "

    ' Trim entfernt führende und nachfolgende Leerzeichen
    strString = Trim(strString)

    ' Ersetze alle Arten von Leerzeichen
    strString = Replace(strString, Chr(160), "") ' Entferne non-breaking space
    strString = Replace(strString, vbTab, "")   ' Entferne Tabulator
    strString = Replace(strString, vbCr, "")    ' Entferne Carriage Return
    strString = Replace(strString, vbLf, "")    ' Entferne Line Feed

    ' Ausgabe des bereinigten Strings
    MsgBox strString
End Sub
  1. Führe das Makro aus: Drücke F5, um das Makro zu starten. Der bereinigte String wird in einer MessageBox angezeigt.

Häufige Fehler und Lösungen

  • Problem: Das Makro entfernt nicht alle Leerzeichen.

    • Lösung: Stelle sicher, dass du alle Arten von Leerzeichen wie Chr(160), vbTab, vbCr und vbLf ersetzt.
  • Problem: Der Code funktioniert nicht in Excel Online oder älteren Excel-Versionen.

    • Lösung: Stelle sicher, dass du VBA-fähige Excel-Versionen verwendest. Der Code funktioniert in Excel 2010 und später.

Alternative Methoden

  • Verwendung von RegEx: Eine leistungsstarke Methode zum Entfernen von Leerzeichen ist die Verwendung von Regular Expressions. Hier ein Beispiel:
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "\s+"  ' Sucht nach allen Arten von Leerzeichen
regEx.Global = True
strString = regEx.Replace(strString, "")
  • Excel-Formel: Du kannst auch die Excel-Funktion GLÄTTEN verwenden, um überflüssige Leerzeichen in einer Zelle zu entfernen. Diese funktioniert jedoch nur für normale Leerzeichen.

Praktische Beispiele

  1. Einzelnes Leerzeichen entfernen:

    strString = Replace(strString, " ", "")
  2. Nicht druckbare Zeichen entfernen:

    strString = Application.WorksheetFunction.Clean(strString)
  3. Multifunktionales Makro: Du kannst das Makro erweitern, um eine gesamte Spalte zu bearbeiten, indem du eine Schleife über die Zellen erstellst.

Sub LeerzeichenInSpalteEntfernen()
    Dim cell As Range
    For Each cell In Range("A1:A10") ' Passen Sie den Bereich an
        cell.Value = Trim(Replace(Replace(cell.Value, Chr(160), ""), vbTab, ""))
    Next cell
End Sub

Tipps für Profis

  • Nutze die VBA Trim-Funktion, um führende und nachfolgende Leerzeichen schnell zu entfernen.
  • Teste deinen Code regelmäßig mit verschiedenen String-Variationen, um sicherzustellen, dass alle Leerzeichen entfernt werden.
  • Dokumentiere deine Funktionen gut, vor allem wenn du eine UDF (benutzerdefinierte Funktion) verwendest, um die Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Trim und Replace? Trim entfernt nur führende und nachfolgende Leerzeichen, während Replace spezifische Zeichen im gesamten String ersetzen kann.

2. Kann ich diese Methoden auch in Access verwenden? Ja, die meisten VBA-Funktionen funktionieren auch in Access. Du kannst access vba leerzeichen aus string entfernen mit ähnlichem Code anwenden.

3. Wie entferne ich Leerzeichen aus einem String in C#? In C# kannst du die Methode string.Trim() verwenden, um führende und nachfolgende Leerzeichen zu entfernen. Verwende string.Replace(" ", ""), um alle Leerzeichen zu entfernen.

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