Array übergeben
23.06.2021 19:02:05
Flo
Könnte mir bitte jemand erklären, weshalb in folgendem Code Variante 1 funktioniert, es bei Variante 2 allerdings folgende Fehlermeldung gibt:
Fehler beim Kompilieren: Unverträglicher Typ: Datenfeld oder benutzerdefinierter Typ erwartet
Die Test Prozedur möchte überprüfen, ob sich ein bestimmter Inhalt in dem Array befindet, das der Prozedur übergeben wurde. Der folgende Ausschnitt ist natürlich nur ein vereinfachtes Beispiel des gesamten Programms!
Da das Programm nicht von mir geschrieben ist und ich es lediglich erweitern möchte, habe ich nicht die Möglichkeit die ist_Wort_in_Array-Funktion zu verändern. Die Art und Weise, wie ich es in Sub_Eins gelöst habe, wirkt mir nicht elegant. Gibt es da eine bessere Möglichkeit?
Option Explicit
Sub Array_Erzeugen()
Dim arr(1 To 10) As Variant
arr(5) = "hallo"
'Variante 1: (funktioniert)
Call Test_Eins(arr)
'Variante 2: (funktioniert nicht)
Call Test_Zwei(arr)
End Sub
Sub Test_Eins(Optional inp_arr As Variant)
Dim arr() As Variant
arr = inp_arr
Debug.Print ist_Wort_in_Array(arr, "hallo")
End Sub
Sub Test_Zwei(Optional inp_arr As Variant)
Debug.Print ist_Wort_in_Array(inp_arr, "hallo")
End Sub
Function ist_Wort_in_Array(ByRef inp_arr() As Variant, wort As String) As Boolean
Dim i As Integer
For i = LBound(inp_arr) To UBound(inp_arr)
If inp_arr(i) = wort Then
ist_Wort_in_Array = True
Exit Function
End If
Next i
End Function
Herzlichen Dank vorab!!!