Si usted quiere saber si la cadena se encuentra en la matriz en todo, probar esta función:
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
Como Sean Cheshire señala, esto debe ser una matriz 1-D.
Ejemplo:
Sub Test()
Dim arr As Variant
arr = Split("abc,def,ghi,jkl", ",")
Debug.Print IsInArray("ghi", arr)
End Sub
(continuación código actualizado basado en el comentario de HansUp)
Si desea que el índice del elemento coincidente en la matriz, intente esto:
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
Esto también asume una matriz 1-D. Tenga en cuenta que LBound y UBound tienen una base cero, por lo que un índice de 2 significa el tercer elemento, no el segundo.
Ejemplo:
Sub Test()
Dim arr As Variant
arr = Split("abc,def,ghi,jkl", ",")
Debug.Print (IsInArray("ghi", arr) > -1)
End Sub
Si tienes un ejemplo específico en mente, por favor, actualice su pregunta con él, de lo contrario código de ejemplo podría no aplicarse a su situación.
¿Cuántas dimensiones? – Fionnuala
¿Simplemente desea saber si la cadena es uno de los elementos de la matriz? ¿O quieres el índice del elemento coincidente? – JimmyPena