Transform an array into a range

131 Views Asked by At

normally, I do not bother with the range object in VBA Excel since I very often run into problems even after studying background information (=> "Object not found etc."). But I encountered a function worksheetfunction.rank which does not like arrays, but needs a range.

Despite all my efforts, I could not get my array into a range. Last effort has been a workaround: writing data on a (hidden) worksheet from the array, then take the range from there. I packaged this in a user-defined function but it does not work. So, I would kindly ask the community here to take a look. Thank you very much in advance.

Function Transform_Array_into_Range(Feld() As Variant) As Range
'Uses Worksheet "For_Range_Transform" to transform an Array into a range
'Only one column !;   needs Option Base 1

Dim rng As Range
Dim lowercounter As Integer
Dim highercounter As Integer
Dim i As Integer

lowercounter = LBound(Feld())
highercounter = UBound(Feld())

Set rng = Worksheets("For_Range_Transform").Range("A1:A1")
Debug.Print (rng(1))

ThisWorkbook.Worksheets("For_Range_Transform").Cells.ClearContents

If lowercounter > 1 Then
 Set rng = Range("A1:A1").Resize(highercounter, 1)
 ' Worksheets("For_Range_Transform").rng.Resize = rng(UBound(Feld()), 1)
 ' Set rng = Range("A1:A1").Resize(highercounter, 1).Select
  
End If


For i = 1 To highercounter
    rng(i).Value = Feld(i)
Next i


End Function
Sub Test_of_UDF_Transform_Array_into_Range()
'gives error
Dim i As Integer
Dim arrF(1 To 5) As Variant
Dim rngR As Range
Dim ws As Worksheet

For i = 1 To 5
    arrF(i) = i
Next i

Set rngR = Worksheets("For_Range_Transform").Range("A1:A1")

Set rngR = Transform_Array_into_Range(arrF())

Debug.Print (ThisWorkbook.Worksheets("For_Range_Transform").rngR(2).Value)

End Sub
0

There are 0 best solutions below