Como descobrir se uma matriz contém uma string

Duplicar Possível:
Como procurar por seqüência de caracteres no array do Microsoft Access VBA

Eu estou trabalhando atualmente em uma macro do Excel, e eu não consegui encontrar uma maneira de fazer como if array.contains(mystring)

Eu escrevi o seguinte, e ele me dá a mensagem “Invalidd Qualifier” e destaca o Mainfram logo após

 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 

A seleção é uma coluna

Alguém ajuda?

Oi, JP Eu tentei a sua sugestão, e ela disse que o Object precisava. E destacou o If IsInArray (cell.Text, Mainfram) Então aqui está meu 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 

Nevermind, eu encontrei esse erro estúpido … Obrigado de qualquer maneira

Usando o código da minha resposta para uma pergunta muito semelhante:

 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 

Outra maneira simples de usar o JOIN e o 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 

Eu acho que não há um atalho para fazer isso – se alguém pudesse escrever um wrapper linq para o VB6!

Você poderia escrever uma function que faz isso fazendo um loop através da matriz e verificando cada input – eu não acho que você conseguirá algo mais limpo do que isso.

Há um artigo de exemplo que fornece alguns detalhes aqui: http://www.vb6.us/tutorials/searching-arrays-visual-basic-6