ich habe 2 Arrays und würde gerne für jeden eintrag in Array1 prüfen, ob dieser in Array2 auftaucht.
.Match ist die richtige Methode, aber Application im Vergleich zur .WorksheetFunction die besser Wahl der Klasse.
Warum?
.WorksheetFunction erzeugt einen Laufzeitfehler, falls ein item nicht gefunden wird => Programm bricht ab.
.Match erzeugt zwar auch einen Fehler, reicht diesen aber durch => Programm bricht nicht ab, Fehler kann zur Laufzeit behandelt werden.
Was Du nun einsetzen musst, ist, eine Variable von einem Datentyp, welcher den durchgereichten Fehler handeln kann.
Das machst Du mit einer Variant-Variablen.
Jetzt, wo der Fehler in einer Variablen festgehalten werden kann, braucht es eine Funktion, um diese Variable auszuwerten.
Diese Funktion heisst IsError(). Die ist sogar so praktisch, dass Du die Funktion ohne Variant-Variable direkt mit einer Anweisung füttern kannst.
(Trotzdem ist es wichtig zu wissen, dass potentielle Fehlermeldungen in einer Variant-Variablen gespeichert werden kann.)
Daraus folgt:
Prüfe jeden Datenfeld-Wert von arr1, ob in arr2 vorhanden.
1 2 3 4 5 6 7 | For Each item In arr1
If IsError(Application.Match(item, arr2, 0)) Then
Debug.Print "Nicht gefunden"
Else
Debug.Print "gefunden"
End If
Next item
|
|