Stringfunktionen in VBA – Zeichenketten verarbeiten

Dieser Artikel beschreibt anhand von Beispielen, wie die Stringfunktionen bei VBA funktionieren: CInt, CStr, InStr, Mid, Right, Left, Len.

Ein häufiges Problem bei der Programmentwicklung ist die Verarbeitung von Zeichenketten (Strings). Die Programmiersprache VBA stellt eine ganze Reihe Funktionen für diese Aufgabe zur Verfügung. Dieser Artikel möchte die wichtigsten Funktionen zur Stringverarbeitung vorstellen und an kleinen Beispielen erläutern.

Zeichenketten miteinander verknüpfen

Zeichenketten können aneinander gehängt werden. Zum Beispiel möchten Sie an einen Dateinamen, der in einer Stringvariablen gespeichert ist, eine Dateiendung anhängen und anschließend den Dateinamen ausgeben. Die beiden Zeichenketten werden mit & aneinander gehängt.

Dim filename As String

filename = filename & ".jpg"

MsgBox (filename)

Zahlen in Zeichenketten umwandeln

Eine häufige Anwendung ist die Umwandlung von Zahlen in Zeichenkette. Sie möchten zum Beispiel in einer Nachrichtenbox ein Berechnungsergebnis ausgeben - eine Zahl. Diese müssen Sie erst einmal mit Hilfe der Funktion CStr() in einen String umwandeln. Anschließend können Sie die beiden Zeichenketten wie oben beschrieben mit & aneinander hängen.

MsgBox("Ergebnis: " & CStr(zahl))

Zeichenketten in Zahlen umwandeln

Natürlich funktioniert auch der umgekehrte Weg: Sie können eine Zeichenkette mit Hilfe der Funktion CInt() in eine Zahl umwandeln. Dabei müssen Sie sich allerdings sicher sein, dass die umzuwandelnde String-Variable wirklich einen Wert enthält, der eine Zahl darstellt. Enthält der Wert alphanumerische Zeichen, erhalten Sie einen Laufzeitfehler.

Dim zahl as Integer

Dim zeichenkette as String

zeichenkette = 101

zahl = CInt(zeichenkette)

Position einer Zeichenkette innerhalb eines Strings ermitteln

Es soll herausgefunden werden, an welcher Stelle ein Teiltext beginnt. Dazu stellt VBA die Funktion InStr zur Verfügung.

Syntax: InStr([startindex, ] durchsuchString, suchString) as Long

Als ersten Parameter erwartet die Funktion den Index, an welcher die Suche starten soll. Wird kein Startindex angegeben, startet die Suche beim ersten Zeichen. Als nächstes muss der String übergeben werden, der durchsucht werden soll, anschließend derjenige, nach dem gesucht wird. Die Funktion gibt die Position des erstens Zeichens von suchString innerhalb von durchsuchString zurück oder 0, falls suchString nicht in durchsuchString vorhanden ist.

Im Beispiel steht in einer Rechnungsnummer das Jahr der Rechnung am Schluss durch einen Bindestrich abgetrennt, also z.B. 1111-2010. Wir möchten herausfinden, an welcher Stelle der Bindestrich steht, damit Rückschlüsse auf die Länge der Rechnungsnummer ohne die Jahreszahl gezogen werden können.

Dim laenge As Long

laenge = InStr(1, "1111-2010", "-") - 1

MsgBox laenge

Da der Bindestrich an fünfter Stelle steht, wir aber nur die Anzahl der Zeichen bis vor den Bindestrich haben möchten, wird von dem Ergebnis von InStr noch 1 abgezogen.

Einen Teilstring kopieren

Auch das folgende Problem ist häufig: Wir möchten gerne einen Teil einer Zeichenkette in eine andere String-Variable kopieren. Dazu dient die Funktion Mid.

Syntax: Mid(string, start[, laenge]) as String

Die Funktion möchte als erstes den Quellstring haben, aus dem die Zeichen herauskopiert werden sollen. Dann benötigt sie den Index des ersten zu kopierenden Zeichens innerhalb des Quellstrings. Schließlich müssen Sie noch die Länge des zu kopierenden Teilstrings angeben, also wie viele Zeichen kopiert werden sollen, einschließlich des Startzeichens.

Im Beispiel kopieren wir das Wort "Welt" in einen neuen String. Der erste Buchstabe steht an siebter Stelle, das Wort hat vier Buchstaben.

Sub midBeispiel()

Dim teilstring As String

teilstring = Mid("Hallo Welt!", 7, 4)

MsgBox teilstring

End Sub

Doch VBA stellt noch zwei weitere Funktionen zur Verfügung: Left() und Right(). Left() gibt eine bestimmte Anzahl Zeichen ab dem ersten Zeichen zurück und Right() gibt eine bestimmte Anzahl Zeichen ab dem letzten Zeichen zurück. Am besten sehen Sie das an dem folgenden Beispiel:

Dim HalloWelt As String

sHalloWelt = "Hallo Welt"

MsgBox (Left(sHalloWelt, 5))

MsgBox (Right(sHalloWelt, 4))

Die erste Nachrichtenbox gibt die ersten fünf Buchstaben der Variable sHalloWelt zurück, also den Text "Hallo". Die zweite Nachrichtenbox zeigt die letzten vier Buchstaben von sHalloWelt an, also "Welt".

Länge einer Zeichenkette bestimmen

Nützlich ist es, wenn man die Länge einer Zeichenkette bestimmen kann, gerade bei der Verwendung der obigen Funktionen. Dies geschieht mit Hilfe der Funktion Len.

Syntax: Len(zeichenkette) as Long

Len erwartet nur die Zeichenkette, deren Länge berechnet werden soll. Zurückgegeben wird - wie soll es anders sein - die berechnete Länge.

Sub lenBeispiel()

Dim laenge As Integer

laenge = Len("Hallo Welt!")

MsgBox "Länge: " & laenge

End Sub

Zeichen aus einer Zeichenkette löschen

Um Zeichen aus einer Zeichenkette zu löschen, müssen Sie mit Hilfe der Funktion Right() und Left() den Text vor und nach den Zeichen, die Sie entfernen möchten, in eine neue String-Variable übertragen. Im folgenden Beispiel soll der Text "doofe" entfernt werden. Dazu werden mit Hilfe von Left() die ersten fünf Zeichen (inklusive Leerzeichen) und mit Hilfe von Right() die letzten vier Zeichen der Variable sHalloWelt in die Variable sNeueWelt kopiert.

Dim sHalloWelt As String

Dim sNeueWelt As String

sHalloWelt = "Hallo doofe Welt"

sNeueWelt = Left(sHalloWelt, 6) & Right(sHalloWelt, 4)

MsgBox (sNeueWelt)

Christopher Olbertz - Ich heiße Christopher Olbertz und komme aus dem Saarland. Nach dem Abitur im Jahr 2000 und meinem Wehrdienst startete ich eine ...

rss