VBA&引用;类型不匹配:应为数组或用户定义的类型;

VBA&引用;类型不匹配:应为数组或用户定义的类型;,vba,excel,Vba,Excel,我对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 Integ

我对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
函数随机_整数(最小为整数,最大为整数)
随机整数值=Int((最大-最小+1)*Rnd+Min)
端函数
函数生成_数组(大小为整数)
尺寸(尺寸)
对于i=0至UBound(Arr)
Arr(i)=随机整数(i-10,i+10)
下一个
生成数组=Arr
端函数
函数find_index_of_min_elem(ByRef Arr()作为变量)
将最小值设置为整数
最小值=Arr(0)
作为整数的Dim MinIndex
MinIndex=0
对于i=1至UBound(Arr)
如果Arr(i)
问题在于函数
的函数find\u index\u of_min\u elem(ByRef Arr()为整数)
需要一个
整数
作为参数,而您正在将
a
作为
变量传递

a = generate_array(20)
IndexOfMinElemInA = find_index_of_min_elem(a)
您将得到的下一个错误是
Dim Arr(Size)As Integer
。不能对这样的数组进行尺寸标注

我建议大家阅读一下数组


可能还有其他错误,但我没有检查这些错误。

问题在于函数的
函数find\u index\u of_min\u elem(ByRef Arr()为整数)
需要一个
整数作为参数,而您正在将
a
作为
变量传递

a = generate_array(20)
IndexOfMinElemInA = find_index_of_min_elem(a)
您将得到的下一个错误是
Dim Arr(Size)As Integer
。不能对这样的数组进行尺寸标注

我建议大家阅读一下数组


可能还有其他错误,但我没有检查这些错误。

这是怎么回事?制作第二列索引号(按从小到大的顺序),然后按原始列对这两行进行排序。我已经包括了下面的例子来说明: A=原始数字列, B=索引编号列 D&E是按A列对A&B进行排序的结果 答案是:最低的数字“0”位于索引7


这个怎么样?制作第二列索引号(按从小到大的顺序),然后按原始列对这两行进行排序。我已经包括了下面的例子来说明: A=原始数字列, B=索引编号列 D&E是按A列对A&B进行排序的结果 答案是:最低的数字“0”位于索引7


我对VBA完全不熟悉….
这段代码是你写的吗?是的。我有其他语言方面的经验,您将希望放弃
snake\u案例
,并采用
PascalCase
作为成员名称。在VBA中,下划线具有特殊含义;您的函数无法重构为这样一个名为的接口。
我对VBA完全陌生。
您编写了这段代码吗?是的。我有其他语言方面的经验,您将希望放弃
snake\u案例
,并采用
PascalCase
作为成员名称。在VBA中,下划线具有特殊含义;你的函数不能被重构成这样一个名为的接口。祝贺你达到100K!再来一杯!谢谢大家:)-“假设您的个人资料中有一个有效的电子邮件地址,并且您选择接收我们的电子邮件,您应该在达到声誉阈值的一周内收到一封自动电子邮件。如果没有,请检查您的垃圾邮件文件夹,确保它不会出现在那里。”新闻警报!所以,在易趣上抓狂吧!再次祝贺-下一站250K!祝贺你达到10万美元!再来一杯!谢谢大家:)-“假设您的个人资料中有一个有效的电子邮件地址,并且您选择接收我们的电子邮件,您应该在达到声誉阈值的一周内收到一封自动电子邮件。如果没有,请检查您的垃圾邮件文件夹,确保它不会出现在那里。”新闻警报!所以,在易趣上抓狂吧!再次祝贺-下一站250K!