/ / VBA. „Niezgodność typu: oczekiwana tablica lub typ zdefiniowany przez użytkownika” - excel, vba, excel-vba

VBA. "Niezgodność typu: oczekiwana tablica lub typ zdefiniowany przez użytkownika" - excel, vba, excel-vba

Jestem całkowicie nowy w VBA. Muszę napisać program, który wygeneruje tablicę liczb całkowitych i znajdzie indeks elementu minimalnego. Dostałem ten błąd „Niezgodność typu: oczekiwana tablica lub typ zdefiniowany przez użytkownika”. Przejrzałem wiele podobnych pytań, ale nie mogłem zrozumieć, co jest nie tak.

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

Odpowiedzi:

7 dla odpowiedzi № 1

Problemem jest funkcja Function find_index_of_min_elem(ByRef Arr() As Integer) spodziewa się Integer jako parametr i przechodzisz a jak Variant

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

Następny błąd, który dostaniesz, jest włączony Dim Arr(Size) As Integer. Nie możesz tak zwymiarować tablicy.

Polecam czytanie na tablicach.

Mogą wystąpić inne błędy, ale ich nie sprawdziłem.


0 dla odpowiedzi nr 2

A co z tym? Utwórz drugą kolumnę numerów indeksu (w kolejności od małej do dużej), a następnie zamów dwa wiersze według oryginalnej kolumny. Zamieszczam poniższy przykład, aby zilustrować: A = oryginalna kolumna liczb, B = kolumna numerów indeksu D & E są wynikiem sortowania A i B według kolumny A Odpowiedź brzmi: najniższy numer „0” był na indeksie 7

przykładowy zrzut ekranu