Wenn eine Türe geschlossen wird, öffnet sich eine andere. (Boing)

Die benutzerdefinierten Listen in Excel sind bekannt:

Umso erstaunlicher gestaltet sich das Objekt, wenn man mit VBA darauf zugreifen möchte:

Die Anzahl der Elemente erhält man mit dem Befehl CustomListCount :

MsgBox Application.CustomListCount

Ein neues Element wird hinzugefügt mit einem Array mit dem Befehl addCustomList:

Dim meineListe As Variant
    meineListe = Array("a", "b", "c")

    Application.AddCustomList meineListe

Sehr angenehm: existiert der Eintrag bereits, ist weder Fehlermeldung noch ein zweiter Listeneintrag die Folge – alles bleibt beim Alten.

Auf ein Element kann per Nummer zugegriffen werden. Das Element wird als Array ausgegeben. Die Elemente können per Schleife ermittelt werden (Achtung: das erste Element trägt die Nummer 1!):

    meineListe = Application.GetCustomListContents(21)
    MsgBox Join(meineListe, "/")

Ein Element kann mit der Methode deleteCustomList gelöscht werden:

Application.DeleteCustomList 21

Wird eine Liste mit einer benutzerdefinierten Liste sortiert, lautet der Befehl:

ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add2 Key:=Range( _
        "F5:F16"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "Blue,Standard,Silber,Gold,Platinum", DataOption:=xlSortNormal

Wird jedoch in einer Pivottabelle nach dieser benutzerdefinierten Reihenfolge sortiert, lautet der Befehl:

    ActiveSheet.Range("$I$5").Sort Order1:=xlAscending, Type:=xlSortLabels, _
        OrderCustom:=12, Orientation:=xlTopToBottom

Allerdings ist nicht 12 der Eintrag „Blue, Standard, Silber, Gold, Platinum“, sondern die Nummer 11:

Application.GetCustomListContents(11)

Ein bisschen verwirrend!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.