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: