Instr mit Platzhaltern in Excel VBA
Schritt-für-Schritt-Anleitung
Um in Excel VBA mit Platzhaltern (Wildcards) zu arbeiten, insbesondere mit der InStr
-Funktion, kannst Du folgende Schritte befolgen:
-
Syntax der InStr-Funktion: Die grundlegende Syntax lautet:
Position = InStr(Startposition, String1, String2, Vergleich)
Startposition
: Die Position, von der aus die Suche beginnen soll.
String1
: Der Text, in dem gesucht werden soll.
String2
: Der Text, nach dem gesucht wird.
Vergleich
: Optional, gibt an, ob Groß-/Kleinschreibung beachtet werden soll.
-
Verwendung von Like
: Anstelle von InStr
kannst Du auch den Like
-Operator verwenden, um mit Wildcards zu arbeiten. Zum Beispiel:
If String1 Like String2 Then
' Code hier
End If
-
Beispiel mit Schleife: Wenn Du die Position eines Musters mit Zahlen (01 bis 99) suchen möchtest, kannst Du eine Schleife verwenden:
Dim LangText As String
Dim Suchtext As String
Dim POS As Integer
LangText = "xxxxx -12- xxx"
Suchtext = "-##-"
For POS = Len(LangText) - Len(Suchtext) + 1 To 1 Step -1
If Mid(LangText, POS, Len(Suchtext)) Like Suchtext Then Exit For
Next POS
Häufige Fehler und Lösungen
- Fehler bei der Verwendung von Wildcards: Wenn Du
?
und *
verwendest, funktioniert dies nur für Buchstaben und nicht für Ziffern. Stelle sicher, dass Du den Like
-Operator korrekt anwendest.
- Syntaxfehler: Achte darauf, dass Du bei der Verwendung von
InStr
und Like
die Syntax genau einhältst. Ein kleiner Fehler kann dazu führen, dass Dein Code nicht funktioniert.
- Unterschied zwischen
InStr
und Like
: Denke daran, dass InStr
die Position zurückgibt, während Like
nur überprüft, ob eine Übereinstimmung vorliegt.
Alternative Methoden
-
Verwendung der WorksheetFunction.Search
: Diese Methode erlaubt es Dir, Platzhalter wie ?
und *
zu verwenden:
Position = WorksheetFunction.Search("- ? -", Dateiname)
Beachte, dass dies nur mit ?
funktioniert, nicht mit ##
für Ziffern.
-
Reguläre Ausdrücke (RegExp): Eine leistungsstarke Methode, um komplexe Muster zu suchen. Du kannst die RegExp-Bibliothek in VBA verwenden, um flexiblere Suchen durchzuführen.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie Du den InStr
-Befehl mit Wildcards verwenden kannst:
Dim Dateiname As String
Dim Position As Integer
Dateiname = "example -12- filename"
Position = InStr(Dateiname, "- ?? -")
If Position > 0 Then
MsgBox "Position gefunden: " & Position
Else
MsgBox "Keine Übereinstimmung gefunden."
End If
In diesem Beispiel wird die Position des Musters in einem Dateinamen gesucht.
Tipps für Profis
FAQ: Häufige Fragen
1. Kann ich mit InStr
nach Ziffern suchen?
Ja, aber Du musst sicherstellen, dass Du die richtigen Wildcards verwendest. InStr
selbst unterstützt keine speziellen Wildcards für Ziffern.
2. Was ist der Unterschied zwischen InStr
und Like
?
InStr
gibt die Position zurück, an der die Übereinstimmung gefunden wurde, während Like
nur überprüft, ob eine Übereinstimmung vorliegt, ohne die Position anzugeben.
3. Wie kann ich eine Schleife für die Suche verwenden?
Du kannst eine Schleife verwenden, um über den Text zu iterieren und Like
zu verwenden, um nach Mustern zu suchen. Ein Beispiel findest Du in der Schritt-für-Schritt-Anleitung.