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!

Advent ist, wenn der Dachboden entrümpelt ist und alles in der Wohnung verteilt ist.

Eigentlich dürfte das doch nicht so schwierig sein, denke ich. Weit gefehlt!

Die Aufgabe: In einer Liste sollen alle Zellen mit einem bestimmten Begriff, beispielsweise „Fehler“ ans Ende der Liste sortiert werden:

Nun – im benutzerdefinierten Sortieren gibt es die Möglichkeit eine benutzerdefinierte Liste zum Sortieren zu definieren. Diese Liste kann auch nur aus einem Wort bestehen:

Für diese Liste gibt es nun zwei Varianten: an den Anfang oder ans Ende:

Wählt man die untere Option – also: ans Ende – dann stehen die anderen Werte auch in umgekehrter Sortierreihenfolge in der Liste:

DAS ist allerdings nicht gewünscht – die oberen Werte sollen in alphabetisch aufsteigender Reihenfolge stehen und DANN der letzte Text „Fehler“. Und: zwei Mal sortieren verbietet Excel:

Also sortieren wir den gewünschten Text „Fehler“ doch nach oben … DAS funktioniert.