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!

Schatz, passe ich in die Parklücke? – Du oder das Auto? – *Ohrfeigengeräusch*

Gestern in der Excelschulung. Wir erstellen eine Pivottabelle. Ich wunder mich, warum die Städe alphabetisch sortiert werden, allerdings München oben steht:

Es fällt mir schnell ein: in einer der letzten Schulungen habe ich benutzerdefinierte Listen gezeigt und dort „München“ verwendet. Deshalb wird dieser Eintrag oben angezeigt.

Manche Leute sagen wenn sie Kaffee trinken können Sie nicht schlafen. Bei mir ist es genau umgekehrt: wenn ich schlafe, kann ich keinen Kaffee trinken.

In einer Pivottabelle sollen die Kalenderwochen als Spaltenbeschriftung verwendet werden. Eigentlich kein Problem. Jedoch beim Jahreswechsel soll natürlich gezählt werden: 51, 52, 53, 1, 2, 3, …

Würd man die Standardsortierung der Pivottabelle verwenden, wäre die Zählung: 1, 2, 3, … 52, 53.

Aber man kann doch benutzerdefiniert sortieren. Fügt man eine benutzerdefinierte Liste per Programmierung in Excel ein, beispielsweise so:

Sub BenutzerdefinierteListeEinfuegen()
    Dim customList As Variant
    Dim i As Integer
    
    ' Definiere die benutzerdefinierte Liste von 40 bis 53 und dann 1 bis 13
    customList = Array("40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14")
    
    ' Füge die benutzerdefinierte Liste in Excel ein
    Application.AddCustomList ListArray:=customList
End Sub

wird die Liste immer nach laufender Kalenderwoche sortiert.

Allerdings frage ich mich: Was passiert, wenn dieses Makro zwei Mal aufgerufen wird? Ein Fehler, weil die Liste schon vorhanden ist? Eine weitere Liste?

Die Antwort: gar nichts: Excel übergeht diese Liste – sie ist schon da. Sehr schön – Excel hat heute mal nicht genervt.

Der vierte Tee mit Rum. So langsam beginnt die Erkältung Spaß zu machen.

Gestern in der Outlook-Schulung. Es kam die Frage auf, wie man Texte für Mails hinterlegen kann. Ich habe vier Varianten gefunden:

  • Die Autokorrektur (geht in Excel auch). Fand keinen großen Anklang
  • Die Schnellbausteine (in Excel haben wir benutzerdefinierte Listen). „Okay – merken wir uns“
  • Vorlagen (gibt es in Excel auch). Problem: Beim Antworten auf eine Mail kann keine Vorlage verwendet werden. Schade. Ein Teilnehmer suchte im Internet; fand eine Lösung. Allerdings ein kostenpflichtiges Add-In, mit dem man Vorlagen bei Antworten verwenden kann.
  • QuickSteps. Dort kann man Text speichern. Leider nicht formatieren. Und leider auch keine Vorlagen verwenden. Schade.

Vier schöne Lösungen … aber alle nicht perfekt.

Lass mich – ich kann das – oh, kaputt!

Ich erstelle eine Pivottabelle.

Obwohl ich nach dem Ortsnamen sortiere, weigert sich Excel zu sortieren. Warum?

Geht nicht!

Geht nicht!

Die Ursache der vermeintlich falschen Sortierung finden Sie, wenn Sie einen Blick in Benutzerdefinierten Listen werfen. Befindet sich dort diese Liste hat sie Vorrang gegenüber der Standardsortierung. Anders als beim „gewöhnlichen“ Sortieren kann hier nicht umgestellt werden.

Lösung 1: Löschen Sie diese Liste

Lösung 2: Wenn Sie nicht auf Ihre Liste verzichten möchten, erstellen Sie diese Liste neu, sortieren diese Liste und importieren nun die sortierte Liste. Dann wird Excel auf diese sortierte Liste zugreifen.

Einen Haken hat diese Lösung: Wenn nun ein Begriff in der Pivottabelle auftaucht, der nicht in der benutzerdefinierten Liste vorhanden ist, steht er am Ende der Pivottabelle … Also doch Lösung 1 ?!?

Danke an Andreas Thehos für diesen Hinweis. Er hat auf

https://youtu.be/NABsUKjdMdo

ein Video dazu erstellt.

Hier befindet sich der Übeltäter!

Hier befindet sich der Übeltäter!

Doppelte Einträge in der Reihe

Ich verstehe es nicht. Ich habe eine „benutzerdefinierte Liste“ erstellt. Aber wenn ich einen Begriff eingebe und herunterziehe, dann steht er zwei Mal in der Liste:

Zwei Mal Deutschland!

Zwei Mal Deutschland!

Schauen Sie noch einmal die Liste in den Optionen an – sicherlich haben Sie den Begriff zwei Mal eingetragen. Jeder Begriff (hier: jedes Land!) darf nur ein Mal in der Liste auftauchen:

Deutschland steht am Anfang der Liste ...

Deutschland steht am Anfang der Liste …

... und noch einmal am Ende!

… und noch einmal am Ende!

Übrigens ist erstaunlich: dass Excel mit dem letzten Begriff beginnt, wenn er zwei Mal in der Liste auftaucht – ich hätte erwartet, dass er mit dem ersten anfängt.