Wenn Sie wissen wollen, ob die Zeichenfolge im Array bei gefunden alle, versuchen Sie diese Funktion:
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
Als Sean Cheshire weist darauf hin, dies muss ein 1-D-Array sein.
Beispiel:
Sub Test()
Dim arr As Variant
arr = Split("abc,def,ghi,jkl", ",")
Debug.Print IsInArray("ghi", arr)
End Sub
(Im Folgenden Code aktualisiert, basierend auf Kommentar von HansUp)
Wenn Sie den Index des Anpassungselement in dem Array wollen, versuchen Sie dies:
Function IsInArray(stringToBeFound As String, arr As Variant) As Long
Dim i As Long
' default return value if value not found in array
IsInArray = -1
For i = LBound(arr) To UBound(arr)
If StrComp(stringToBeFound, arr(i), vbTextCompare) = 0 Then
IsInArray = i
Exit For
End If
Next i
End Function
Dies setzt auch ein 1-D-Array voraus. Beachten Sie, dass LBound und UBound nullbasiert sind, also bedeutet ein Index von 2 das dritte Element, nicht das zweite.
Beispiel:
Sub Test()
Dim arr As Variant
arr = Split("abc,def,ghi,jkl", ",")
Debug.Print (IsInArray("ghi", arr) > -1)
End Sub
Wenn Sie ein konkretes Beispiel im Sinn haben, aktualisieren Sie bitte Ihre Frage damit, sonst Codebeispiel möglicherweise nicht auf Ihre Situation zutreffen.
Wie viele Dimensionen? – Fionnuala
Möchten Sie nur wissen, ob die Zeichenfolge eines der Array-Elemente ist? Oder möchten Sie den Index des passenden Elements? – JimmyPena