VBA-Programmierung in Microsoft Excel

Tutorial: Excel-Beispiele

VBA-Begriff: Like (Operator)

Dient zum Vergleichen zweier Zeichenfolgen.

Syntax

Ergebnis = Zeichenfolge Like Muster

Die Syntax des Operators Like besteht aus folgenden Teilen:

Teil Beschreibung
Ergebnis Erforderlich. Eine beliebige numerische Variable.
Zeichenfolge Erforderlich. Ein beliebiger Zeichenfolgenausdruck.
Muster Erforderlich. Ein beliebiger Zeichenfolgenausdruck mit einem gültigen Vergleichsmuster (wie unter Bemerkungen beschrieben).

Bemerkungen

Wenn Zeichenfolge und Muster übereinstimmen, ist Ergebnis True. Bei fehlender Übereinstimmung ist Ergebnis False. Hat entweder Zeichenfolge oder Muster den Wert Null, so ist Ergebnis ebenfalls Null.

Das Verhalten des Operators Like hängt von der Option Compare-Anweisung ab. Die Standardmethode für den Zeichenfolgenvergleich in allen Modulen ist Option Compare Binary.

Bei Option Compare Binary basieren Zeichenfolgenvergleiche auf einer Sortierreihenfolge, die durch die interne binäre Darstellung der Zeichen festgelegt ist. Die Sortierreihenfolge wird durch die Code-Seite festgelegt. Das folgende Beispiel zeigt eine typische binäre Sortierreihenfolge:

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text führt zu Zeichenfolgenvergleichen, die die im Gebietsschema des Systems gewählte Sortierreihenfolge für Zeichen verwenden (wobei keine Unterschiede in der Groß- und Kleinschreibung berücksichtigt werden). Die oben dargestellten Zeichen würden beim Sortieren mit Option Compare Text folgende Reihenfolge erhalten:

(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)

Der integrierte Mustervergleich stellt ein vielseitiges Hilfsmittel für Zeichenfolgenvergleiche dar. Mit den Mustervergleichsfunktionen können Sie Platzhalterzeichen, Zeichenlisten oder Zeichenbereiche in einer beliebigen Kombination verwenden, um Zeichenfolgen zu vergleichen. Welche Platzhalterzeichen für Muster verwendet werden können und wofür diese jeweils stehen, ist der folgenden Tabelle zu entnehmen:

Zeichen in Muster Steht in Zeichenfolge für
? Ein beliebiges einzelnes Zeichen.
* Kein oder mehrere Zeichen.
# Eine beliebige einzelne Ziffer (0 - 9).
[ZeichenListe] Ein beliebiges einzelnes Zeichen in ZeichenListe.
[!ZeichenListe] Ein beliebiges einzelnes Zeichen, das nicht in ZeichenListe enthalten ist.

Eine in eckige Klammern ([ ]) gesetzte Gruppe mit einem oder mehreren Zeichen (ZeichenListe) kann zum Vergleich für jedes beliebige Zeichen in Zeichenfolge verwendet werden und kann nahezu alle Zeichen-Codes (auch Ziffern) enthalten.

Anmerkung   Die Sonderzeichen linke Klammer ([), Fragezeichen (?), das Zeichen # und das Sternchen (*) müssen in eckige Klammern gesetzt werden, um für einen Vergleich herangezogen werden zu können. Die rechte eckige Klammer (]) kann nicht innerhalb einer Gruppe zu vergleichender Zeichen verwendet werden. Sie kann jedoch außerhalb einer Gruppe als einzelnes Zeichen angegeben werden.

Sie können in ZeichenListe auch einen Bereich von Zeichen angeben, indem Sie den größten und den kleinsten Wert des Bereichs getrennt durch einen Bindestrich (-) angeben. [A-Z] führt zum Beispiel zu einer Übereinstimmung, wenn die entsprechende Zeichenposition in Zeichenfolge einen Großbuchstaben im Bereich von A bis Z enthält. Mehrere Bereiche können Sie ohne weitere Trennzeichen nacheinander in einem Klammernpaar angeben.

Die Bedeutung des angegebenen Bereichs hängt von der zur Laufzeit geltenden Zeichenreihenfolge ab (die durch Option Compare und das Gebietsschema auf dem ausführenden System festgelegt wird). Im beschriebenen Beispiel für Option Compare Binary [A-E] ist A, B und E im Bereich [A–E] enthalten. Bei Option Compare Text] sind die Zeichen A, a, À, à, B, b, E, e im Bereich [A–E] enthalten. Ê oder ê sind nicht enthalten, weil Zeichen mit einem Akzent in der Sortierreihenfolge hinter den entsprechenden Zeichen ohne Akzent liegen.

Nachfolgend weitere wichtige Regeln zum Mustervergleich:

  • Ein Ausrufezeichen (!) am Anfang von ZeichenListe bedeutet, daß sich eine Übereinstimmung ergibt, wenn in Zeichenfolge ein beliebiges Zeichen außer den Zeichen in ZeichenListe gefunden wird. Wird das Ausrufezeichen außerhalb der eckigen Klammern verwendet, so dient es als Platzhalterzeichen für sich selbst.

  • Ein Bindestrich (-) kann entweder am Anfang (nach einem Ausrufezeichen, sofern vorhanden) oder am Ende von ZeichenListe erscheinen, um als Platzhalterzeichen für sich selbst zu dienen. In jeder anderen Position dient der Bindestrich zur Kennzeichnung eines Zeichenbereichs.

  • Wenn ein Zeichenbereich festgelegt wird, müssen die Zeichen in aufsteigender Sortierreihenfolge (vom niedrigsten zum höchsten) angegeben werden. [A-Z] ist demnach ein zulässiges Muster, [Z-A] dagegen nicht.

  • Die Zeichenfolge [] wird als Null-Zeichenfolge ("") interpretiert.

In einigen Sprachen gibt es bestimmte Zeichen im Alphabet, die eigentlich zwei separate Zeichen darstellen. In verschiedenen Sprachen wird zum Beispiel das Zeichen "æ" verwendet, um die Zeichen "a" und "e" darzustellen, wenn Sie nebeneinander erscheinen. Der Operator Like erkennt, daß das einzelne Sonderzeichen und die beiden einzelnen Zeichen gleichwertig sind.

Wenn eine Sprache, in der eines dieser Sonderzeichen verwendet wird, in den Ländereinstellungen des Systems angegeben ist, wird eine Übereinstimmung des einzelnen Sonderzeichens entweder in Muster oder in Zeichenfolge mit der entsprechenden Folge aus zwei Zeichen in der anderen Zeichenfolge erkannt. Genauso wird eine Übereinstimmung zwischen einem einzelnen Sonderzeichen in Muster, das in eckige Klammern eingeschlossen ist (als einzelnes Zeichen, in einer Liste oder in einem Bereich), und der entsprechenden Folge aus zwei Zeichen in Zeichenfolge erkannt.