betrifft alle |
Problembeschreibung:
Wer kennt es nicht: Man möchte innerhalb eines Programmcodes wissen, ob ein bestimmter Wert in einem Array existiert und wenn ja auch noch gleich welchen Index dieser Wert im Array besitzt. Leider bietet VBA solch eine elementare Funktion nicht an.
Lösungsidee
Andere Programmiersprachen wie z. B. PHP machen es vor. Dort gibt es eine Funktion In_Array(), die genau diesen Job erledigt. Also liegt es nahe, uns auch solch eine Funktion in VBA zu generieren.
Da in VBA - im Gegensatz zu anderen Programmiersprachen - der Index im Array nur eine Zahl größer gleich 0 (Null) sein kann, kann unsere Funktion auch gleich den Index zurückgeben, falls ein Element im Array existiert, da alle Rückgabewerte kleiner Null als Index nicht vorkommen können und deshalb auf Nichtexistieren des Wertes hindeuten.
Programmcode
Function In_Array(ByVal Suchwert As Variant, ByRef Kontainer As Variant) As Long
'gibt den Index des Felds in einem Array zurück, wenn der Suchwert im Array vorhanden ist
Dim Wert As Variant
Dim Index As Long
In_Array = -1
If Len("" & Suchwert) > 0 Then
Index = 0
For Each Wert In Kontainer
'Wertvergleich entsprechend Typ
If StrComp("" & Suchwert, "" & Wert, vbTextCompare) = 0 Then
'Wert vorhanden -> Index zurückgeben
In_Array = Index
Exit For
End If
Index = Index + 1
Next Wert
End If
End Function