Array in Excel-Bereich

Ich bin neu in VBA und versuche zu schreiben, der ein array zu einem excel-Bereich durch ein array UDF.

Ich versuche die Ausgabe des array auf eine maximale Anzahl von Zeilen, die die Formel wurde platziert. Ich bin mit der Microsoft Scripting Bibliothek für das Wörterbuch, wenn diese Angelegenheiten.
Mit einer array-Formel in excel (STRG+Shift+Enter), wie kann ich die Größe meines Arrays auf den Bereich, der die Formel wurde platziert und dann das array in die Zellen?
Ich möchte die Formel in der Zelle =test("G1:J20") und die Formel wird in die Zellen A1:B20.

Code:
    Function test(ByVal inputRange As Range) As Variant
    Dim Cell As Variant
    Dim D As Dictionary
    Dim Arr() As Variant
    Dim i As Long
    Set D = New Dictionary

' Remove duplicates
For Each Cell In inputRange
    If D.Exists(CStr(Cell.Value)) = False Then
        D.Add CStr(Cell.Value), 1
    Else
        D.Exists (Cell.Value)
        D.Item(Cell.Value) = D.Item(Cell.Value) + 1
   End If
Next
D.Remove vbNullString

Redim Arr(0 To Application.Max(D.Count, Application.Caller.Cells.Count))

'Fill the array with the keys from the Dictionary
For i = 0 To D.Count - 1
    Arr(i) = D.Keys(i)
Next i

test = Application.Transpose(Arr)
End Function
  • Wenn Sie ReDim ein array ohne Verwendung Preserve dann verlieren Sie den Inhalt, aber in jedem Fall, dass Sie ReDim kann nur die Letzte dimension eines 2-D array... Versuchen Sie den Aufruf der Funktion aus einer test-Sub leichter zu Debuggen.
InformationsquelleAutor hollige1 | 2014-07-10
Schreibe einen Kommentar