ich habe hier im Forum die Filter-Methode kennengelernt, um einzelne Werte aus einem Array zu löschen.
https://www.herber.de/forum/archiv/936to940/936979_einzelnen_Wert_aus_Array_loeschen.html
Da stand folgendes:
Sub test2()
Dim myArr As Variant
Dim x As Integer, s As Variant
myArr = Array("a", "b", "c", "d", "e")
Randomize
'Zufälligen Eintragwählen (Index)
x = Int((UBound(myArr) + 1) * Rnd)
'Zufälliger Eintrag
s = myArr(x)
'Eintrag Löschen
myArr = Filter(myArr, s, False)
MsgBox Join(myArr, vbCrLf)
End Sub
Dies wollte ich nun nutzen. Ich habe zwei Arrays mit Anzahl x Elementen. Diese vergleiche ich miteinander und wenn Wert a in beiden Listen vorhanden ist, möchte ich den Wert aus dem zweiten Array löschen.Bis zum Löschen funktioniert es super, aber irgendwie funktioniert meine Filter methode, wie oben nicht.
Hier ein Ausschnitt:
Listold As Variant
(Listold wird eingelesen und enthält eine Liste aus strings)
Indexold ist meine fortlaufende Nummer für den aktuellen Wert in meinem Array)
Listold = Filter(Listold, Listold(Indexold), False, vbTextCompare)
Ich wollte jetzt nicht den ganzen Code reinkopieren, der ist lang und ohne Erklärung schwer zu verstehen.
Indexold = 1
Länge von Indexold ist 16 aktuell
Wert ist ein string
Ich bekomme den Fehler: "Laufzeitfehler 9: Index außerhalb des gültige Bereichs"
Ich habe keine ahnung, wo mein Fehler liegt. Ich habe vorher noch nicht mit Arrays / Variants in VBA gearbeitet.
Gruß,
NW