Arrays 在VBA Excel中是否可能有一个函数将数组作为参数(输入),并将其自身作为数组输出?

Arrays 在VBA Excel中是否可能有一个函数将数组作为参数(输入),并将其自身作为数组输出?,arrays,excel,vba,input,output,Arrays,Excel,Vba,Input,Output,尝试创建一个函数,该函数将接受数组参数,并最终将自身输出为数组 伪代码: Function CheckCommonPartOfArrays(ByRef arrayA as Variant, ByRef arrayB as Variant) as Variant Dim aTemp() Dim itemA as Variant Dim itemB as Variant Dim i For Each itemA in arrayA For

尝试创建一个函数,该函数将接受数组参数,并最终将自身输出为数组

伪代码:

Function CheckCommonPartOfArrays(ByRef arrayA as Variant, ByRef arrayB as Variant) as Variant

    Dim aTemp()
    Dim itemA as Variant
    Dim itemB as Variant
    Dim i 

    For Each itemA in arrayA
        For Each itemB in arrayB
            If itemA = itemB Then
                Redim Preserve aTemp(i)
                aTemp(i) = itemA
                i = i + 1
            End If
        Next itemB
    Next itemA

    ' And here is the problem, now trying to copy this
    ' temporary array Temp() into the array CheckCommonPartOfArrays,
    ' which is declared as Variant in the beginning of the function,
    ' but it doesn't work.


    CheckCommonPartOfArrays = aTemp
End Function
在“局部变量”窗口中,CheckCommonPartOfArray似乎实际上是一个数组,它确实包含我希望它包含的元素,但是当我尝试将其复制到另一个数组或甚至调试时。打印值,每次我尝试调用它时,它都会作为函数调用,并告诉我“参数不是可选的”-即ByRef arrayA作为变量,ByRef arrayB。。。等等’

有没有办法做到这一点


我希望函数接受两个一维数组作为参数,最后我希望函数本身成为结果数组,我可以在以后的代码中使用它。

函数checkCommonPartOfArray(ByRef arrayA作为Variant,ByRef arrayB作为Variant)作为Variant()
我也会在
I=I+1
之后添加一个
退出,感谢您的建议,但是它似乎没有改变任何事情!回到子例程时,我尝试:anotherTempArray=CheckCommonPartOfArray,它不再复制函数的输出,而是再次调用函数。。。我也用()尝试过,同样的结果:/works for me
anotherTempArray
应该声明
Dim anotherTempArray()为Variant
并且调用应该是
anotherTempArray=checkcommonpartofarray(arrayA,arrayB)
您解决了我的问题!我在子程序中用“CheckCommonPartOfArrays arrayA,arrayB”来调用它。这就是我调用其他子例程的方式,例如,为了查找范围,我不知道我们可以用这种方式调用它(多亏了你!):“anotherTempArray=CompareArray(arrayA,arrayB)。顺便问一下,你认为这是比较数组的有效方式吗?
函数CheckCommonPartOfArrays(ByRef arrayA作为变体,ByRef arrayB作为变体)作为变体()
我也会在
I=I+1
之后添加一个
出口,感谢您的建议,但是它似乎没有改变任何事情!当回到子例程时,我尝试:anotherTempArray=CheckCommonPartOfArray,而不是复制函数的输出,它再次调用函数…我尝试了()同样,同样的结果:/works for me
anotherTempArray
应该声明为变量
Dim anotherTempArray()
并且调用应该是
anotherTempArray=CheckCommonPartOfArrays(arrayA,arrayB)
您解决了我的问题!我通过以下方式调用它:“CheckCommonPartOfArrays arrayA,arrayB“在子例程中。我总是这样调用其他子例程,例如,为了查找范围,我不知道我们可以这样调用它(多亏了您!):“anotherTempArray=Comparararray(arrayA,arrayB)。顺便问一下,您认为这是比较数组的有效方法吗?”?