You can create “polymorphic” routines that work with any type of array (except arrays of fixed-length strings, or UDTs) by using Variant parameters. Take for example the following code:
Function Sum(arr As Variant) As Variant Dim i As Long For i = LBound(arr) To UBound(arr) Sum = Sum + arr(i) NextEnd Function
Interestingly, not only does the above routine work with any type of numeric arrays, it also works with array of strings (in which case it appends all the items in the array). It also works with arrays of Objects, provided that they expose a default property and that no type mismatch occurs when “summing” properties from different items.
The only disadvantage of this technique is that it is noticeably slower than code that works with a well-defined type of an array.