/ / VBA. "Typenkonflikt: Array oder benutzerdefinierter Typ erwartet" - Excel, vba, excel-vba

VBA. "Typenkonflikt: Array oder benutzerdefinierter Typ erwartet" - Excel, VBA, Excel-VBA

Ich bin völlig neu in der VBA. Ich muss ein Programm schreiben, das ein Integer-Array generiert und einen Index des Minimalelements findet. Ich habe diesen Fehler bekommen "Typkonflikt: Array oder benutzerdefinierter Typ erwartet." Ich sah mir viele ähnliche Fragen an, konnte aber nicht herausfinden, was falsch ist.

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

Antworten:

7 für die Antwort № 1

Das Problem ist die Funktion Function find_index_of_min_elem(ByRef Arr() As Integer) erwartet ein Integer als Parameter und Sie übergeben a Als ein Variant

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

Der nächste Fehler wird angezeigt Dim Arr(Size) As Integer. Sie können ein Array nicht so dimensionieren.

Ich würde empfehlen, sich über Arrays zu informieren.

Es kann andere Fehler geben, aber ich habe diese nicht überprüft.


0 für die Antwort № 2

Was ist damit? Erstellen Sie eine zweite Spalte mit Indexnummern (in der Reihenfolge von klein bis groß) und ordnen Sie dann die beiden Zeilen nach Ihrer ursprünglichen Spalte an. Ich habe das folgende Beispiel zur Veranschaulichung beigefügt: A = die ursprüngliche Spalte mit Zahlen B = die Spalte der Indexnummern D & E sind das Ergebnis der Sortierung von A & B nach Spalte A Die Antwort lautet dann: Die niedrigste Zahl "0" war bei Index 7

Beispiel-Screenshot