自定义一函数,用来对数组进行处理,比如下面的可以GetSameElement(arr1,arr2,arr3)
但函数本身的的参数是从别的地方传递过来的,数量及名称均不定,现在想用一个字符串变量来整体代表这个参数比如str="arr1,arr2,arr3",GetSameElement(str)但不成功,怎么解决这问题?
Function GetSameElement(ParamArray vParamArray()) As String
但函数本身的的参数是从别的地方传递过来的,数量及名称均不定,现在想用一个字符串变量来整体代表这个参数比如str="arr1,arr2,arr3",GetSameElement(str)但不成功,怎么解决这问题?
Function GetSameElement(ParamArray vParamArray()) As String
Dim I As Variant
For Each I In Params
Debug.Print CStr(I)
Next
end function
ParamArray 本来就是用来解决数量和名称不定的情况,代码写了,怎么不会活用啊?
如果仅想把其它参数变成数组,可以使用Array函数,比如v()=array(arr1,arr2,arr3)。
不知道我的问题有没有说清楚
上次写的函数是可以这么用,假如arr0,arr1,arr2是三个数组名称,GetSameElement(arr0,arr1,arr2)
但我现在比如有5个数组arr0,arr1,arr2,arr3,arr4,
我现在随机要求3个,比如arr0,arr2,arr3,怎么把这个信息传递给函数呢?
相当于,我把这5个数组名称放入一个list,任意选取他们的组合,赋值给函数
Debug.Print GetSameElement(Array(1, 2, 3, 4, 5), Array(1, 2, 9), Array(1, 2, 10))
End SubFunction GetSameElement(ParamArray vParamArray()) As String
Dim strArr() As String
Dim i As Long, j As Long, k As Long
Dim strResult As String
Dim nVal As Long
Dim blnSame As Boolean
For i = 0 To UBound(vParamArray)
If Not IsArray(vParamArray(i)) Then Exit Function
ReDim Preserve strArr(i)
strArr(i) = Join(vParamArray(i), ",")
Next
For i = 0 To UBound(vParamArray)
For j = 0 To UBound(vParamArray(i))
nVal = vParamArray(i)(j)
If InStr(strResult, nVal) = 0 Then
blnSame = True
For k = 0 To UBound(strArr)
If InStr(strArr(k), nVal) = 0 Then
blnSame = False
Exit For
End If
Next
If blnSame Then strResult = strResult & "," & nVal
End If
Next
Next
strResult = Mid(strResult, 2)
GetSameElement = strResult
End Function