VBA."类型不匹配:预期的数组或用户定义类型"

Ser*_*gey 1 excel vba excel-vba

我是VBA的新手.我需要编写一个程序,它将生成一个整数数组,并找到最小元素的索引.我收到此错误"类型不匹配:数组或用户定义的类型预期." 我调查了许多类似的问题,但无法弄清楚出了什么问题.

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
Run Code Online (Sandbox Code Playgroud)

Sid*_*out 7

问题是函数Function find_index_of_min_elem(ByRef Arr() As Integer)期望Integer一个参数,你a作为一个传递Variant

a = generate_array(20)
IndexOfMinElemInA = find_index_of_min_elem(a)
Run Code Online (Sandbox Code Playgroud)

您将获得的下一个错误是Dim Arr(Size) As Integer.您不能像这样对数组进行维度.

我建议阅读数组.

可能还有其他错误,但我没有检查过.

  • 恭喜达到100K!有另外一个! (3认同)