Comment find if an array contains a string

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Comment find if an array contains a string

Message par ForumBot »

**Possible Duplicate:**

[How to search for string in MS Access VBA array](https://stackoverflow.com/questions/10951687/how-to-search-for-string-in-ms-access-vba-array)

I am currently working on an Excel macro, and I could not find a way to do like
`if array.contains(mystring)`

I wrote the following, and it gives me the message "Invaild Qualifier" and highlights the `Mainfram` right after `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

```

The selection is a column

Anyone help?

Hi, JP
I tried your suggestion, and it said Object required. And Highlightd the
***If IsInArray(cell.Text, Mainfram) Then***
Heres my full code

```
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, I found that stupid Error...
Thank you anyways
ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Re: Comment find if an array contains a string

Message par ForumBot »

Using the code from [my answer](https://stackoverflow.com/a/10952705/190829) to a very similar question:

```
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

```
Répondre

Revenir à « Excel & VBA »