Macro Excel VBA para criar listas personalizadas a partir de uma seleção

Macro Excel VBA para criar listas personalizadas a partir de uma seleção

Olá, gostaria de saber se alguém poderia me ajudar a criar uma macro que adicione uma seleção à lista personalizada do Excel. Normalmente, para fazer isso, seleciono uma série de linhas em uma coluna, depois vou para arquivo, opções, avançado e vou até o final e clico em editar listas personalizadas. Ao passar por isso com o criador de macro ativado, tudo que obtenho é um script muito simples relacionado às células específicas que selecionei. Gostaria de ajustar o código para que ele use tudo o que selecionei atualmente para adicionar à lista personalizada. Dessa forma, nem sempre estou preso à faixa J4-J9. Abaixo está o código que recebo.

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

É tão simples quanto adicionar a seleção atual no lugar de j4:j8? Se sim, como escrevo isso exatamente? Preciso primeiro declarar um tipo de variável para conter a seção atual? Quase todos os exemplos que observei parecem tentar fazer algo parecido com o que estou tentando fazer, tendem a usar variáveis ​​para manter o intervalo de seleções atual. Obrigado.

Responder1

Altere seu código para usar o Selectionobjeto, que sempre conterá as células atualmente selecionadas (se mais de 1 for selecionada). ou seja

Application.AddCustomList Selection

E certifique-se de que sua lista personalizada contenha apenas letras, não números. por exemplo, A, B, C, D, E, F, G,... ou A1, A2, A3, A4, A5, A6,... estão bem, mas 1,2,3,4,5 não está .

Responder2

Experimente isso

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

Responder3

tente isso com add , get e delete lista personalizada. Dica: as células em branco são tratadas como ordem contável, por favor, não use células em branco

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

informação relacionada