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 Selection
objeto, 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