Передайте массив TempArray обратно целиком. Вам не нужно полагаться на вспомогательные функции для определения уникальности, так как приложение Excel.Application имеет несколько параметров.
Sub main()
Dim arr As Variant
arr = Array(1, 2, 2, 3, 4, 5, 5)
Debug.Print Join(arr, ",") '1,2,2,3,4,5,5
arr = UniqueArray(arr)
Debug.Print Join(arr, ",") '1,2,3,4,5
End Sub
Function UniqueArray(MyArray) As Variant
Dim i As Long, TempArray As Variant
ReDim TempArray(0)
TempArray(0) = MyArray(LBound(MyArray))
For i = LBound(MyArray) + 1 To UBound(MyArray)
If IsError(Application.Match(MyArray(i), TempArray, 0)) Then
ReDim Preserve TempArray(UBound(TempArray) + 1)
TempArray(UBound(TempArray)) = MyArray(i)
End If
Next i
UniqueArray = TempArray
End Function
Если функция будет использоваться за пределами Excel, вы, вероятно, захотите сохранить сопутствующую функцию IsInArray.