Excel VBA-Makro zum Erstellen benutzerdefinierter Listen aus einer Auswahl

Excel VBA-Makro zum Erstellen benutzerdefinierter Listen aus einer Auswahl

Hallo, ich habe mich gefragt, ob mir jemand helfen könnte, ein Makro zu erstellen, das eine Auswahl zu einer benutzerdefinierten Excel-Liste hinzufügt. Normalerweise wähle ich dazu eine Reihe von Zeilen in einer Spalte aus, gehe dann zu Datei, Optionen, Erweitert und scrolle ganz nach unten und klicke auf „Benutzerdefinierte Listen bearbeiten“. Wenn ich dies mit eingeschaltetem Makro-Ersteller durchgehe, erhalte ich nur ein sehr einfaches Skript, das sich auf die spezifischen Zellen bezieht, die ich ausgewählt habe. Ich möchte den Code so optimieren, dass er das verwendet, was ich aktuell ausgewählt habe, um es der benutzerdefinierten Liste hinzuzufügen. Auf diese Weise bin ich nicht immer an den Bereich J4-J9 gebunden. Unten ist der Code, den ich erhalte.

Sub Customlistadd()
'
' Customlistadd Macro
'
' Keyboard Shortcut: Ctrl+Shift+I
'
    Application.AddCustomList ListArray:=Range("J4:J8")
End Sub

Ist es so einfach, die aktuelle Auswahl anstelle von j4:j8 hinzuzufügen? Wenn ja, wie schreibe ich das genau? Muss ich zuerst einen Variablentyp deklarieren, um den aktuellen Abschnitt aufzunehmen? Fast alle Beispiele, die ich mir angesehen habe und die anscheinend versuchen, etwas in der Art dessen zu tun, was ich versuche, neigen dazu, Variablen zu verwenden, um den aktuellen Auswahlbereich aufzunehmen. Vielen Dank.

Antwort1

Ändern Sie Ihren Code Selection, um das Objekt zu verwenden, das immer die aktuell ausgewählten Zellen enthält (wenn mehr als 1 ausgewählt ist). ie

Application.AddCustomList Selection

Und stellen Sie sicher, dass Ihre benutzerdefinierte Liste nur Buchstaben und keine Zahlen enthält. Beispielsweise sind A, B, C, D, E, F, G, … oder A1, A2, A3, A4, A5, A6, … in Ordnung, 1, 2, 3, 4, 5 jedoch nicht.

Antwort2

Versuche dies

Public Sub CreateCustomList()
  Dim v As Variant
  Dim rng As Excel.Range

  Set rng = ActiveSheet.Range("A1:A3")

  'Transpose from 2 dim array to 1 dim array
  v = Application.Transpose(Selection)

  'Add the custom list
  Application.AddCustomList v

End Sub

Antwort3

Versuchen Sie dies mit „add“, „get“ und „delete“ benutzerdefinierte Listen. Tipp: Leere Zellen werden als zählbare Reihenfolge behandelt, verwenden Sie bitte keine leeren Zellen

Sub CoustomList()

    Dim Arr() As Variant
    Dim N As Long    
    Application.AddCustomList ListArray:=Sheet1.Range("A2:A4")
    Arr = Sheet1.Range("A2:A4")
    N = Application.GetCustomListNum(Arr)
    Application.DeleteCustomList N

End Sub

verwandte Informationen