Fonte: http://www.exceltip.com
A macro abaixo preenche um ListBox (que também poderia ser um ComboBox) em um UserForm com os valores únicos de um range. No VBA, crie um UserForm, insira um ListBox e coloque o código abaixo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | Private Sub UserForm_Initialize() Dim MyUniqueList As Variant, i As Long With Me.ListBox1 .Clear ' limpa o conteúdo do listbox MyUniqueList = UniqueItemList(Range("A1:A30"), True) For i = 1 To UBound(MyUniqueList) .AddItem MyUniqueList(i) Next i .ListIndex = 0 ' seleciona o primeiro item End With End Sub Private Function UniqueItemList(InputRange As Range, _ HorizontalList As Boolean) As Variant Dim cl As Range, cUnique As New Collection, i As Long, uList() As Variant Application.Volatile On Error Resume Next For Each cl In InputRange If cl.Formula <> "" Then cUnique.Add cl.Value, CStr(cl.Value) End If Next cl UniqueItemList = "" If cUnique.Count > 0 Then ReDim uList(1 To cUnique.Count) For i = 1 To cUnique.Count uList(i) = cUnique(i) Next i UniqueItemList = uList If Not HorizontalList Then UniqueItemList = _ Application.WorksheetFunction.Transpose(UniqueItemList) End If End If On Error GoTo 0 End Function |
Neste caso, estou supondo que existe uma lista de valores entre as células A1 e A30 da planilha ativa. A função pode facilmente ser transformada para retornar um array com valores únicos.
Olá!
Não sei se você pode me ajudar, mas estou com uma dúvida para varrer os dados selecionados de uma listBox.
Tenho uma listBox´que é preenchida atravéz de um Select e a pessoa que ira utilizar poderá selecionar mais de um item, e eu preciso saber qual as opções que ela escolheu para que ao clicar em um botão ela possa gerar um arquivo com as informações selecioandas.
Desde já agradeço.
Raquel,
O código abaixo varre os itens de um listbox imprime os selecionados na janela de verificação imediata.
Private Sub ImprimeSelecionados()
For i = 1 To ListBox1.ListCount
If ListBox1.Selected(i – 1) Then
Debug.Print ListBox1.List(i – 1) & ” selecionado”
End If
Next
End Sub
Altere-o como quiser.
Abraços
Olá Tomás!
Muito Obrigada!
Um Abraço!
Eu utilizo uma maneira mais simples, e muito mais facil de ser lembrada.
Pois essa que vc mostrou não funcionou aki.
–
–
__________________________________________________
Dim linha As Integer
Dim tanto
linha = Worksheets(“Plan1”).Range(“A100”).End(xlUp).Row
tanto = 0
With Worksheets(“Plan1”)
For i = 1 To linha
tanto = tanto 1
Me.ListBox1.AddItem .Cells(tanto, 1).Value
Next
End With
__________________________________________________
Essa função descobre quantas linhas existe preechida e adiciona a “ListBox1” o tanto determinado de valores até a ultima linha. sem precisar chamar função exterior.
–
Gregory,
Talvez o código não tenha funcionado porque algumas partes estavam com encodadas pelo HTML. Já está corrigido.
Quanto a seu código, obrigado por mais esta alternativa.
O código acima é só um exemplo. Quanto ao Range, ele pode ser dinâmico.
Mesmo assim, o objetivo do post era o preenchimento de itens únicos em uma lista, e isso ele está fazendo, e bem.
Qualquer outra dúvida ou sugestão, recomendo o fórum:
http://www.tomasvasquez.com.br/forum
Nos vemos lá!
Abraços
Tomás
Olá, gostaria de uma ajuda.
Tenho um ListBox e ativei o fmMultiSelectMulti para poder selecionar vários itens. Gostaria de saber se tem como criar uma lista dos itens que são selecionados no ListBox
Desde já agradeço
Willian,
É necessário varrer os itens do ListBox e verificar os selecionados. Esse pergunta já foi respondida em nosso fórum:
http://www.tomasvasquez.com.br/forum/viewtopic.php?f=5&t=251&p=1561&hilit=listbox+selecionados#p1561
Nos vemos lá!
Gostei, eu sou novo no VBA, sera que pra adaptar, para listar todos os dados da planilha, e ao clicar neles eles possam ser copiados para o formulário.
Pires,
Corre para o fórum colocar sua dúvida que lá é o melhor lugar para resolver ela:
http://www.tomasvasquez.com.br/forum
Nos vemos lá!