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