Hallo,
ich benötige eine komplexe Sortierfunktion für ein Array. Eigentlich schien mir hierzu die Nutzung einer Arraylist zusammen mit einer eigenen implementierung von IComparer als sinnvoll.
Folgende Beispielfunktion soll dies nutzen
Sub Tcompare()
Dim objArrLst As ArrayList
Dim a As BlockType
Dim cmp As MyIcomp
Set a = New BlockType
Set objArrLst = CreateObject("System.collections.Arraylist")
Set cmp = New MyIcomp
a.Context = 1
a.Group = 1
objArrLst.Count
objArrLst.Add a
Set a = New BlockType
a.Context = 2
a.Group = 1
objArrLst.Add a
objArrLst.Sort cmp
End Sub
MyIcomp ist so definiert:
Implements IComparer
Public Function IComparer_Compare(ByVal x, ByVal y) As Long
IComparer_Compare = 0
End Function
und BlockType so:
Option Explicit
Public Context As Integer
Public Group As Integer
Public Export As Boolean
Public ID As Integer
Public Tempate As String
Public Out As String
Immer wenn objArrLst.Sort cmp aufgerufen wird, beschwert sich VBA Object unterstützt diese Eigenschaft oder Methode nicht. Was mache ich falsch?
vielen Dank
Matze
|