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.

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
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Die Ausfรผhrung des obigen Codes fรผhrt zu folgendem Ergebnis
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


