Macro de Excel VBA para crear listas personalizadas a partir de una selección

Macro de Excel VBA para crear listas personalizadas a partir de una selección

Hola, me preguntaba si alguien podría ayudarme a crear una macro que agregue una selección a la lista personalizada de Excel. Normalmente, para hacer esto, selecciono una serie de filas en una columna, luego accedo a archivo, opciones, avancé, me desplazo hasta el final y hago clic en editar listas personalizadas. Cuando hago esto con el creador de macros activado, todo lo que obtengo es un script muy simple que está relacionado con las celdas específicas que he seleccionado. Me gustaría modificar el código para que use lo que haya seleccionado actualmente para agregar a la lista personalizada. De esa manera no siempre estoy atado a la gama J4-J9. A continuación se muestra el código que recibo.

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

¿Es tan simple como agregar la selección actual en lugar de j4:j8? Si es así, ¿cómo hago para escribir eso exactamente? ¿Primero necesito declarar un tipo de variable para contener la sección actual? Casi todos los ejemplos que he visto que parecen intentar hacer algo parecido a lo que estoy intentando hacer tienden a utilizar variables para mantener el rango de selecciones actual. Gracias.

Respuesta1

Cambie su código para usar el Selectionobjeto, que siempre contendrá las celdas seleccionadas actualmente (si se selecciona más de 1). es decir

Application.AddCustomList Selection

Y asegúrese de que su lista personalizada solo contenga letras, no números. por ejemplo, A,B,C,D,E,F,G,... o A1,A2,A3,A4,A5,A6,... están bien, pero 1,2,3,4,5 no lo está .

Respuesta2

Prueba esto

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

Respuesta3

Pruebe esto con agregar, obtener y eliminar lista personalizada. Consejo: Las celdas en blanco se tratan como orden contable, por favor no use celdas en blanco

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

información relacionada