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!