VBA-String-Manipulationsfunktionen & Operatoren

⚡ Intelligente Zusammenfassung

VBA-Zeichenkettenmanipulationsfunktionen und OperaTore kombinieren, messen und extracTextverarbeitung in Excel-Makros. Diese Seite erklärt den Verkettungsoperator, die Funktionen LINKS, RECHTS, MITTEL, LÄNGE und INSTR, das Aufteilen und Zusammenfügen von Zeichenketten sowie die häufigsten Fehlerquellen.

  • 🔤 Zeichenkettendaten: Ein Wert, der aus Zeichen, Symbolen und Zahlen zusammengesetzt ist, wie zum Beispiel der Text Jul-2015.
  • ➕ Verkettung Operator: Das kaufmännische Und-Zeichen verbindet zwei Zeichenketten, also ergibt „John ” & „Doe“ John Doe.
  • ️ Extraction Funktionen: Links, Rechts und Mitte extrahieren eine Teilzeichenkette vom Anfang, Ende bzw. der Mitte eines Wertes.
  • 📏 Messfunktionen: Len zählt Zeichen und InStr gibt die Position zurück, an der eine Teilzeichenkette beginnt.
  • 🧩 Teilen und Zusammenführen: Split zerlegt eine durch Trennzeichen getrennte Zeichenkette in ein Array, und Join setzt ein Array wieder zu einer einzigen Zeichenkette zusammen.
  • ⚠️ Häufige Fehler: Typenkonflikte, die Rückgabe von Null durch InStr und nachfolgende Leerzeichen sind die häufigsten Ursachen für fehlgeschlagene Vergleiche.

VBA-Zeichenkettenmanipulationsfunktionen und Operatoren

VBA-String Operatoren

Stringdaten werden verwendet, um Daten zu speichern, die aus Zahlen, Zeichen und Symbolen bestehen. „Jul-2015“ ist ein Beispiel für Stringdaten. Es besteht aus

  • Charaktere (Juli)
  • Symbol (-)
  • Numbers (2015)

String-Operatoren werden verwendet, um String-Daten zu manipulieren. Sie können beispielsweise den Wert von Juli 2015 aus den ersten drei Buchstaben des Monats und des Jahres zusammensetzen, also „Jul-3“.

Die folgende Tabelle zeigt den VBA-Zeichenfolgenverkettungsoperator.

S / N OperaDo. Beschreibung Beispiel Ausgang
1 & Verketten: Dieser Operator wird verwendet, um Zeichenfolgen miteinander zu verketten "John Doe" Max Mustermann

Beispielquelle Code

VBA-String Operators Beispielquelle Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

Die Ausführung des obigen Codes führt zu folgendem Ergebnis

VBA-String Operators Beispielquelle Code

Das kaufmännische Und-Zeichen ist nicht das einzige Symbol, das Text verbindet, und der Unterschied zwischen den beiden ist wichtig, sobald Zahlen ins Spiel kommen.

Unterschied zwischen & und + bei der Zeichenkettenverkettung

VBA akzeptiert sowohl das kaufmännische Und-Zeichen (&) als auch das Pluszeichen (+) zwischen zwei Textwerten, weshalb Anfänger sie oft als austauschbar betrachten. Sobald einer der Operanden eine Zahl oder ein leerer Wert ist, verhalten sie sich jedoch anders, und nur eines von beiden ist zulässig.

Verhalten & (Et-Zeichen) + (Plus)
Zwei Textwerte Schließt sich ihnen an: „Guru„ & „99“ Rückgaben Guru99 Schließt sich ihnen an: „Guru„ + „99“ Rückgaben Guru99
Text und eine Zahl Wandelt die Zahl in Text um: „Alter“ & 30 ergibt Alter 30 Löst einen Typenkonflikt aus
Zwei Zahlenfolgen „10“ und „5“ ergeben 105. „10“ + „5“ ergibt 15.
Ein Nullwert Behandelt Null als leere Zeichenkette Gibt Null zurück und verwirft das gesamte Ergebnis.

💡 Tipp: Verwenden Sie für die Verkettung immer das kaufmännische Und-Zeichen und reservieren Sie das Pluszeichen für … RechenoperationenSetzen Sie vor und nach dem kaufmännischen Und-Zeichen (&) jeweils ein Leerzeichen, da VBA die Schreibweise Total& als Zeichen für die Typdeklaration Long interpretiert.

VBA-String-Manipulationsfunktionen

Die VBA-String-Manipulation ist ein wichtiges Element in Excel VBA für Makroprogrammierung und Zeichenfolgenoperationen. Excel bietet verschiedene Arten von VBA-Zeichenfolgenmanipulationsfunktionen wie:

  • Links: wird verwendet, um zu extract Zeichen von der linken Seite der Zeichenkette
  • Rechts: wird verwendet, um zu extract Zeichen von der rechten Seite der Zeichenkette
  • Mid: wird verwendet, um zu extraceine Teilzeichenkette aus der Mitte einer Zeichenkette
  • Len: wird verwendet, um die Länge einer Zeichenfolge zu ermitteln
  • InStr: wird verwendet, um die Position eines Teilstrings in einem String zu finden
  • TrimDer Doppelpunkt (:) wird verwendet, um Leerzeichen an beiden Enden einer Zeichenkette zu entfernen.
  • ErsetzenDer Doppelpunkt wird verwendet, um jedes Vorkommen einer Teilzeichenkette durch eine andere zu ersetzen.
  • UCase / LCaseDoppelpunkte werden verwendet, um eine Zeichenkette in Großbuchstaben oder Kleinbuchstaben umzuwandeln.

Die Tabelle unten zeigt die Syntax jeder Funktion mit einem durchgerechneten Beispiel, sodass Sie das Muster direkt in ein Makro kopieren können.

Funktion Syntax Beispiel Ausgang
Links Links(Zeichenkette, Länge) Links („Jul-2015“, 3) Juli
Rechts Rechts(Zeichenkette, Länge) Rechts („Jul-2015“, 4) 2015
Mid Mitte(Zeichenkette, Start, Länge) Mid(“Jul-2015”, 5, 4) 2015
Len Länge(Zeichenkette) Len („Juli 2015“) 8
InStr InStr(start, string, substring) InStr(1, „Jul-2015“, „-“) 4
Trim Trim(string) Trimmen(" Guru99 “) Guru99
Ersetzen Ersetzen(Zeichenkette, suchen, ersetzen) Ersetzen („Jul-2015“, „-“, „/“) 2015. Juli
UCase UCase(string) UCase(“guru99”) GURU99

Das untenstehende Makro kombiniert mehrere dieser Funktionen, um eine Datumsbezeichnung aus ihren Teilen wiederherzustellen.

Sub StringFunctionsDemo()
    Dim Source As String
    Dim MonthPart As String
    Dim YearPart As String

    Source = "July-2015"

    ' Take the first three characters
    MonthPart = Left(Source, 3)
    ' Take the last four characters
    YearPart = Right(Source, 4)

    MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions"
End Sub

Die Ausführung des Makros zeigt Jul-2015 an. Jede Funktion gibt einen neuen Wert zurück und lässt die ursprüngliche Zeichenkette unverändert, weshalb die Ergebnisse problemlos in einem einzigen Ausdruck kombiniert werden können.

Diese Funktionen verarbeiten jeweils nur eine Zeichenkette. Wenn ein einzelner Wert eine ganze Liste enthält, eignen sich zwei andere Funktionen besser dafür.

Wie man Zeichenketten in VBA aufteilt und zusammenfügt

In Excel eingefügte Daten liegen oft als ein einziger langer Wert mit Trennzeichen zwischen den einzelnen Elementen vor, z. B. „Pepsi,Coke,Fanta,Juice“. Das Einlesen mit MID und INSTR ist langsam und fehleranfällig. VBA bietet ein perfekt aufeinander abgestimmtes Funktionspaar für genau diese Aufgabe.

Split nimmt eine durch Trennzeichen getrennte Zeichenkette entgegen und gibt ein nullbasiertes Array zurück, wobei jedes Element einem Element entspricht. Registrieren Die Funktion `Join` bewirkt das Gegenteil: Sie nimmt ein Array entgegen und gibt einen einzelnen String mit einem Trennzeichen zwischen den Elementen zurück. Beachten Sie, dass `Join` mit einem Array arbeitet, nicht mit zwei separaten Strings.

Sub SplitAndJoinDemo()
    Dim Source As String
    Dim Items() As String
    Dim i As Long

    Source = "Pepsi,Coke,Fanta,Juice"

    ' Break the value into an array on every comma
    Items = Split(Source, ",")

    For i = LBound(Items) To UBound(Items)
        Sheet1.Cells(i + 1, 1).Value = Items(i)
    Next i

    ' Rebuild the list with a different separator
    MsgBox Join(Items, " | "), vbOKOnly, "Joined List"
End Sub

Die Schleife schreibt jedes Getränk in eine eigene Zeile des Tabellenblatts, und die Meldungsbox zeigt anschließend Pepsi | Cola | Fanta | Saft an. Drei Punkte machen dieses Muster im Produktivcode zuverlässig:

  • Ergebnis bei Nullbasis: Split gibt immer ein Array zurück, das bei 0 beginnt, unabhängig davon, wie Option Base eingestellt ist. Daher sollte die Schleife mit LBound und UBound anstatt mit einer festen Zahl gesteuert werden.
  • Deklarieren Sie als String(): Weisen Sie das Ergebnis einem dynamischen String-Array zu. Die vorherige Deklaration einer festen Größe führt zu einem Kompilierfehler.
  • Leerer Eingang: Das Aufteilen einer leeren Zeichenkette ergibt ein Array ohne Elemente. Testen Sie daher mit UBound, bevor Sie Items(0) lesen.

Selbst bei Auswahl der richtigen Funktion schlägt String-Code in einer kleinen Anzahl vorhersehbarer Fälle fehl.

Häufige VBA-Zeichenfolgenfehler und wie man sie behebt

Die meisten String-Fehler in Excel VBA lassen sich auf wenige Ursachen zurückführen. Das Erkennen der Symptome spart eine lange Fehlersuche.

  • Typenkonflikt bei der Verkettung: Zwischen Text und Zahl wurde ein Pluszeichen verwendet. Ersetzen Sie es durch ein kaufmännisches Und-Zeichen (&), das die Zahl automatisch umwandelt.
  • InStr gibt 0 zurück: Die Teilzeichenkette wurde nicht gefunden. InStr gibt im Fehlerfall 0 statt -1 zurück. Prüfen Sie daher, ob der Wert größer als null ist, bevor Sie das Ergebnis an Mid übergeben.
  • Ungültiger Prozeduraufruf in Mid oder Left: Die angeforderte Länge ist negativ oder die Startposition liegt unter 1. Schützen Sie den Aufruf mit Len, damit die Länge die Zeichenkette niemals überschreitet.
  • Vergleiche, die übereinstimmen sollten, es aber nicht tun: Nachfolgende Leerzeichen in importierten Daten führen zu einem Fehler bei der Gleichheitsprüfung. Verwenden Sie dazu auf beiden Seiten Trim und StrComp, wenn Groß- und Kleinschreibung ignoriert werden soll.
  • Text, der nicht in eine Zahl umgewandelt wird: Ein Wert wie „1,200“ führt aufgrund des Trennzeichens zu einem Rechenfehler. Entfernen Sie das Trennzeichen mit Replace, bevor Sie den Wert mit CLng konvertieren.

Laden Sie Excel herunter, das den obigen Code enthält

Laden Sie die obige Excel-Datei herunter. Code

Häufig gestellte Fragen

Eine Zeichenkette variabler Länge kann bis zu etwa zwei Milliarden Zeichen speichern, eine Zeichenkette fester Länge bis zu 65,400. Eine Tabellenzelle speichert jedoch nur 32,767 Zeichen, sodass längere Werte beim Schreiben in ein Tabellenblatt abgeschnitten werden.

Das Gleichheitszeichen vergleicht standardmäßig unter Berücksichtigung der Groß- und Kleinschreibung. Verwenden Sie `StrComp(a, b, vbTextCompare)` für ein Ergebnis, das die Groß- und Kleinschreibung ignoriert, oder fügen Sie `Option Compare Text` am Anfang des Moduls ein, um die Standardeinstellung für das gesamte Modul zu ändern.

Das kaufmännische Und-Zeichen (&) wandelt jeden Operanden vor der Verknüpfung in Text um, sodass 10 & 5 die Zeichenkette 105 ergibt. Behalten Sie die numerischen Werte bei und addieren Sie sie zuerst. Verketten Sie das Ergebnis erst, wenn es in einer Nachricht erscheinen soll.

Ja. Beschreiben Sie die Eingabe und die gewünschte Ausgabe, zum Beispiel:tracFüge den Code vor dem ersten Bindestrich hinzu, und ein KI-Assistent gibt einen Left- und InStr-Ausdruck zurück. Teste ihn auf Grenzfälle wie einen fehlenden Bindestrich.

Ja. Fügen Sie einen verschachtelten Ausdruck wie Mid mit InStr darin ein, und ein KI-Assistent zerlegt ihn in Schritte, benennt jedes Argument und kennzeichnet den Fall, in dem InStr Null zurückgibt und der Aufruf fehlschlägt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: