preencher listbox c...
 
Notifications
Clear all

preencher listbox com varias colunas

10 Posts
1 Usuários
0 Reactions
9,654 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá a todos!!!
Já procurei aqui no forum e na net.
Achei varios exemplos e nenhum que eu conseguisse entender. :?
A duvida é a seguinte:
Tenho um listbox com varias colunas.
A primeira tranquilo.
Aproveitando um evento de combobox_charge()
Do While ComboBox1.Value <> ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Loop
ActiveCell.Offset(1, 0).Select
Do While ActiveCell <> ""
With ListBox1
.AddItem ActiveCell.Value
.ListIndex = -1
End With
ActiveCell.Offset(1, 0).Select
Loop

Como preencher as demais colunas com itens da plan?
Sou meio lento pra entender alguns conceitos :oops:

Quem puder me esplicar fico gradecido :D

 
Postado : 11/07/2011 8:01 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Anderson, primeiro precisa definir a quantida de de Colunas na Propriedade do ListBox:
ColumnCount = ?? - Qde de Colunas.

Um exemplo basico e de fácil compreensão:

Private Sub UserForm_Initialize()
    Dim cell As Range
    Dim Rng As Range
    
    With ThisWorkbook.Sheets("Plan1")
        Set Rng = .Range("A2", .Range("A2").End(xlDown))
    End With
    
    For Each cell In Rng.Cells
        With Me.ListBox1
            .ColumnCount = 3 'Define a qde de Colunas no Listbox

            .AddItem cell.Value
            .List(.ListCount - 1, 1) = cell.Offset(0, 1).Value 'Coluna 1
            .List(.ListCount - 1, 2) = cell.Offset(0, 2).Value 'Coluna 2
            .List(.ListCount - 1, 3) = cell.Offset(0, 2).Value 'Coluna 3
        End With
    Next cell
    
End Sub

[]s

 
Postado : 11/07/2011 8:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Só corrigindo o problema do Ctrl+C x Ctrl-V, rsrsr

Na Rotina acima, a qde de colunas no Listbox:
.ColumnCount = 3 o certo são 4 pelo fato do preenchimento termos:

.AddItem cell.Value 'Coluna 1 da Plan1 => 0 do ListBox e assim por diante
.List(.ListCount - 1, 1) = cell.Offset(0, 1).Value 'Coluna 2 da Plan1 => 1 do ListBox
.List(.ListCount - 1, 2) = cell.Offset(0, 2).Value 'Coluna 3
.List(.ListCount - 1, 3) = cell.Offset(0, 2).Value 'Coluna 4

Devemos ter em mente que a contagem em colunas em ListBox começa em "0".

[]s

 
Postado : 11/07/2011 8:57 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Realmente é de facil aplicação, somente uma duvida oque significa ListCount - 1 já que o proximo numero é o indice da coluna como esplicado

 
Postado : 11/07/2011 9:08 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vamoas apelar À propria ajuda do VBA:
Propriedade ListCount
Retorna o número de entradas de lista em um controle.
Sintaxe : objeto.ListCount
A sintaxe da propriedade ListCount possui a parte a seguir:
Parte Descrição
objeto Obrigatória. Um objeto válido.

Comentários
A propriedade ListCount é somente leitura. ListCount é o número de linhas que podem ser roladas. ListRows é o máximo que pode ser exibido de uma só vez. ListCount é sempre uma unidade maior que o maior valor para a propriedade ListIndex, pois os números de índice começam com 0 e a contagem de itens começa com 1. Se nenhum item for selecionado, ListCount será 0 e ListIndex –1.

Propriedade ListIndex
Identifica o item atualmente selecionado em um ListBox ou ComboBox.
Sintaxe
objeto.ListIndex [= Variante]

A sintaxe da propriedade ListIndex possui as partes a seguir:

Parte Descrição
objeto Obrigatória. Um objeto válido.
Variante Opcional. O item atualmente selecionado no controle.

Comentários
A propriedade ListIndex contém um índice da linha selecionada em uma lista. Os valores de ListIndex variam de –1 a um número uma unidade menor que o número total de linhas em uma lista (isto é, ListCount – 1). Quando não há linhas selecionadas, ListIndex retorna –1. Quando o usuário seleciona uma linha em um ListBox ou ComboBox, o sistema define o valor de ListIndex. O valor de ListIndex da primeira linha em uma lista é 0, o valor da segunda linha é 1, e assim por diante.

Observação Se você utilizar a propriedade MultiSelect para criar um ListBox que permita múltiplas seleções, a propriedade Selected do ListBox (e não a propriedade ListIndex) identificará as linhas selecionadas. A propriedade Selected é uma matriz com o mesmo número de valores que o número de linhas no ListBox. Para cada linha da caixa de listagem, Selected é True se a linha estiver selecionada e é False se não estiver. Em um ListBox que permite múltiplas seleções, ListIndex retorna o índice da linha que possui o foco, independentemente de essa linha estar ou não atualmente selecionada.

O valor de ListIndex também está disponível definindo-se a propriedade BoundColumn como 0 para uma caixa de combinação ou uma caixa de listagem. Se BoundColumn for 0, a fonte de dados subjacente à qual a caixa de combinação ou a caixa de listagem está acoplada contém o mesmo valor de índice de lista que o de ListIndex.

[]s

 
Postado : 11/07/2011 10:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

VLW!!!
Preciso me acostumar a ultilizar a ajuda com mais frequecia.
Já utilizo bastante o gravador de macro que tem me ajudado muito tambem...

Brigadão :D

 
Postado : 11/07/2011 10:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Resolvido :

Continuo sem conseguir editar com resolvido

 
Postado : 11/07/2011 10:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá!

Aproveitando que não consegui editar o topico vai mais uma duvida.

Como preencher (tanto listbox como combobox) apartir de uma lista sem repetir valores?

Tipo numa lista

Anderson
Anderson
Anderson
José
José

Quero que apareça

Anderson
José

BLZ?

T+

 
Postado : 12/07/2011 4:35 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Supondo que os dados estão na Coluna A, para preencher o ComboBox1 do Form :

Private Sub CommandButton1_Click()

Me.ComboBox1.Clear
Dim OCOLLECTION As New Collection
Dim VARVALUE As Variant
Dim I, ULTLINHA As Long

ULTLINHA = Plan1.Range("A65536").End(xlUp).Row
On Error Resume Next
    For Each VARVALUE In Plan1.Range("A2:A" & ULTLINHA)
        OCOLLECTION.Add (VARVALUE), (VARVALUE)
    Next

For I = 1 To OCOLLECTION.Count
        ComboBox1.AddItem OCOLLECTION.Item(I)
    Next

End Sub
 
Postado : 12/07/2011 8:21 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Adaptei o codigo com os nomes da plan e do combobox implementei no evento UserForm_Initialize e rodou BLZ! :D

Mais uma vez Brigadão!!! :D

T+ :D

 
Postado : 12/07/2011 8:39 am