Duplicate possible:
Comment rechercher une chaîne dans un tableau MS Access VBA
Je travaille actuellement sur une macro Excel et je ne pouvais pas trouver un moyen de faire comme if array.contains(mystring)
J'ai écrit ce qui suit, et cela me donne le message "Invaild Qualifier" et met en évidence la Mainfram
juste aprè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 sélection est une colonne
Quelqu'un aide?
Bonjour, JP J'ai essayé votre suggestion et il est dit que l'objet est requis. Et surligné le Si IsInArray (cell.Text, Mainfram) Alors Voici mon code complet
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
Tant pis, j'ai trouvé cette stupide erreur ... Merci quand même
En utilisant le code de ma réponse à une question très similaire:
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
Un autre moyen simple en utilisant JOIN
et 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
Utilisez la méthode Filter () - http://msdn.Microsoft.com/en-us/library/aa164525 (v = office.10) .aspx
Je crains que je ne pense pas qu'il existe un raccourci pour le faire - si seulement quelqu'un écrivait un wrapper linq pour VB6!
Vous pouvez écrire une fonction qui le fait en parcourant le tableau et en vérifiant chaque entrée. Je ne pense pas que vous obtiendrez plus propre.
Un exemple d'article fournit des détails ici: http://www.vb6.us/tutorials/searching-arrays-visual-basic-6