Cómo encontrar si una matriz contiene una cadena

Posible duplicado:
Cómo buscar una cadena en una matriz MS Access VBA

Actualmente estoy trabajando en una macro de Excel, y no pude encontrar una manera de hacer como if array.contains(mystring)

Escribí lo siguiente, y me da el mensaje “Invaild Qualifier” y destaca el Mainfram justo después If

 Dim Mainfram(4) As String Mainfram(0) = "apple" Mainfram(1) = "pear" Mainfram(2) = "orange" Mainfram(3) = "fruit" For Each cel In Selection If Mainfram.Contains(cel.Text) Then Row(cel.Row).Style = "Accent1" End If Next cel 

La selección es una columna

¿Alguien ayuda?

Hola, JP. Probé tu sugerencia, y dijo Objeto requerido. Y destacó el If IsInArray (cell.Text, Mainfram) Entonces aquí está mi código completo

 Sub changeRowColor() Columns("B:B").Select Dim cel As Excel.Range Dim Mainfram(4) As String Mainfram(0) = "apple" Mainfram(1) = "pear" Mainfram(2) = "orange" Mainfram(3) = "Banana" For Each cel In Selection If IsInArray(cell.Value, Mainfram) Then Rows(cel.Row).Style = "Accent1" End If Next cel End Sub Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function 

No importa, encontré ese estúpido error … Gracias de todos modos

Usando el código de mi respuesta a una pregunta muy similar:

 Sub DoSomething() Dim Mainfram(4) As String Dim cell As Excel.Range Mainfram(0) = "apple" Mainfram(1) = "pear" Mainfram(2) = "orange" Mainfram(3) = "fruit" For Each cell In Selection If IsInArray(cell.Value, MainFram) Then Row(cell.Row).Style = "Accent1" End If Next cell End Sub Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function 

Otra forma simple de usar JOIN y INSTR

 Sub Sample() Dim Mainfram(4) As String, strg As String Dim cel As Range Dim Delim As String Delim = "#" Mainfram(0) = "apple" Mainfram(1) = "pear" Mainfram(2) = "orange" Mainfram(3) = "fruit" strg = Join(Mainfram, Delim) strg = Delim & strg For Each cel In Selection If InStr(1, strg, Delim & cel.Value & Delim, vbTextCompare) Then _ Rows(cel.Row).Style = "Accent1" Next cel End Sub 

Me temo que no creo que haya un atajo para hacer esto, ¡si alguien escribiera un contenedor linq para VB6!

Podrías escribir una función que lo haga recorriendo la matriz y verificando cada entrada; no creo que te vayas más limpio que eso.

Hay un artículo de ejemplo que proporciona algunos detalles aquí: http://www.vb6.us/tutorials/searching-arrays-visual-basic-6