/ / VBA。 「タイプの不一致:配列またはユーザー定義型が予期される」 - excel、vba、excel-vba

VBA。 「タイプの不一致:配列またはユーザー定義型が予期される」 - 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

回答:

回答№1の場合は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)

次のエラーが表示されます Dim Arr(Size) As Integer。そのような配列の次元を設定することはできません。

私は配列を読むことをお勧めします。

他のエラーがあるかもしれませんが、私はそれらをチェックしていません。


回答№2の場合は0

これはどうですか? インデックス番号の2番目の列を作成し(小から大へ順番に)、元の列で2つの行を並べ替えます。説明するために以下の例を挙げました: A =数字の元の列、 B =インデックス番号の列 D&EはAとBを列Aでソートした結果です その答えは、最も低い数字「0」がインデックス7にあった

スクリーンショットの例