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 meanotherTempArray
应该声明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 meanotherTempArray
应该声明为变量Dim anotherTempArray()
并且调用应该是anotherTempArray=CheckCommonPartOfArrays(arrayA,arrayB)
您解决了我的问题!我通过以下方式调用它:“CheckCommonPartOfArrays arrayA,arrayB“在子例程中。我总是这样调用其他子例程,例如,为了查找范围,我不知道我们可以这样调用它(多亏了您!):“anotherTempArray=Comparararray(arrayA,arrayB)。顺便问一下,您认为这是比较数组的有效方法吗?”?