/ / VBA. «Type incompatible: type de tableau ou défini par l'utilisateur attendu» - excel, vba, excel-vba

VBA. “Type incompatible: type de tableau ou défini par l'utilisateur attendu” - excel, vba, excel-vba

Je suis complètement nouveau à VBA. J'ai besoin d'écrire un programme, qui générera un tableau d'entiers et trouvera un index de l'élément minimal. J'ai eu cette erreur "Incompatibilité de type: type de tableau ou défini par l'utilisateur attendu." J’ai examiné de nombreuses questions similaires, mais j’ai été incapable de comprendre ce qui ne va pas.

Function random_integer(Min As Integer, Max As Integer)
random_integer = Int((Max - Min + 1) * Rnd + Min)
End Function

Function generate_array(Size As Integer)
Dim Arr(Size)
For i = 0 To UBound(Arr)
Arr(i) = random_integer(i - 10, i + 10)
Next
generate_array = Arr
End Function

Function find_index_of_min_elem(ByRef Arr() As Variant)
Dim Min As Integer
Min = Arr(0)
Dim MinIndex As Integer
MinIndex = 0
For i = 1 To UBound(Arr)
If Arr(i) < Min Then
Min = Arr(i)
MinIndex = i
End If
Next
find_index_of_min_elem = MinIndex
End Function

Sub task6()
A = generate_array(20)
IndexOfMinElemInA = find_index_of_min_elem(A)
MsgBox IndexOfMinElemInA
End Sub

Réponses:

7 pour la réponse № 1

Le problème est la fonction Function find_index_of_min_elem(ByRef Arr() As Integer) attend un Integer en tant que paramètre et vous passez a comme un Variant

a = generate_array(20)
IndexOfMinElemInA = find_index_of_min_elem(a)

La prochaine erreur que vous obtiendrez est sur Dim Arr(Size) As Integer. Vous ne pouvez pas dimensionner un tableau comme ça.

Je recommanderais de lire sur des tableaux.

Il peut y avoir d'autres erreurs mais je n'ai pas vérifié celles-ci.


0 pour la réponse № 2

Et ça? Créez une deuxième colonne d'index (dans l'ordre, de la plus petite à la plus grande), puis triez les deux lignes en fonction de votre colonne d'origine. J’ai inclus l’exemple ci-dessous pour illustrer: A = la colonne de nombres d'origine, B = la colonne des numéros d'index D & E sont le résultat du tri de A & B par la colonne A La réponse est alors: le nombre le plus bas "0" était à l'index 7

exemple capture d'écran