Notifications
Clear all

LISTBOX COM MAIS DE 10 COLUNAS

6 Posts
4 Usuários
0 Reactions
2,799 Visualizações
 giba
(@giba)
Posts: 15
Active Member
Topic starter
 

Olá a todos,

Tenho o seguinte código para polular a listbox, mas não consigo aumentar a quantidade de colunas, o código aceita apenas 10 colunas e eu preciso de 12. Será que alguém poderia me ajudar. Desde já Agradeco.

'-----------------------------------------
If mandado.Value = "" Then
ListBox3.Clear
Else
ListBox3.ColumnWidths = "140 pt; 60 pt; 80 pt ;90 pt; 100 pt; 80 pt;80 pt;80 pt;80 pt;80 pt;80 pt;80 pt"
ListBox3.ColumnCount = 12 'Define a qde de Colunas no Listbox
ListBox3.Clear
With Plan2
strObjetoBuscar = mandado.Value
strObjetoBuscar = LCase(strObjetoBuscar)

For E = 2 To 10000
lngResultado = InStr(1, .Cells(E, 5), strObjetoBuscar, vbTextCompare)
If lngResultado > 0 Then

ListBox3.AddItem .Range("a" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 1) = .Range("b" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 2) = .Range("c" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 3) = .Range("d" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 4) = .Range("e" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 5) = .Range("f" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 6) = .Range("G" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 7) = .Range("H" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 8) = .Range("I" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 9) = .Range("J" & E).Value
'DÁ ERRO A PARTIR DESSA LINHA
ListBox3.List(ListBox3.ListCount - 1, 10) = .Range("K" & E).Value
ListBox3.List(ListBox3.ListCount - 1, 11) = .Range("L" & E).Value

End If
Next E
End With
End If
'-----------------------------------------

 
Postado : 06/04/2014 12:53 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Já usou a pesquisa do fórum? :roll:
viewtopic.php?f=10&t=3789
viewtopic.php?f=23&t=2110

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/04/2014 1:17 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Giba,

Boa noite!

Complementando a resposta do alexandrevba, veja no fórum vários exemplos com o controle ListView. O ListBox é mesmo limitado.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 06/04/2014 5:38 pm
cleiton jm
(@cleiton-jm)
Posts: 115
Estimable Member
 

Segue uma solução, só adaptar...

Private Sub CarregaListbox()
Dim lastRow As Long

lastRow = Plan1.RANGE("A65000").End(xlUp).Row

ListBox3.RowSource = Sheets("Plan1").RANGE("A2:J" & lastRow).Address(external:=True)
ListBox3.ColumnWidths = "140 pt; 60 pt; 80 pt ;90 pt; 100 pt; 80 pt;80 pt;80 pt;80 pt;80 pt;80 pt;80 pt"
End Sub

 
Postado : 06/04/2014 6:05 pm
 giba
(@giba)
Posts: 15
Active Member
Topic starter
 

obrigado pela resposta tão rápida, porém, ainda não consegui encaixar esse código que você me passou, naquele que estou usando. Todas as tentativas acabam gerando erros, pois o código que estou usando preenche a listbox de forma seletiva. De acordo com o número que ponho em um textbox, meu código trás para a listbox todas as linhas que têm apenas aquele número.

Será que não daria para incluir de forma diferente naquele meu código, já vi alguma coisa sobre array, porém não sei usar.
Obrigado.

 
Postado : 07/04/2014 2:36 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Em VBA você está limitado a 10 colunas (0-9), utilizando RowSource podemos ter 256 colunas
usando additem o limite são 10 colunas
usando RowSource 256 colunas

Simplificando, podemos utilizar um ARRAY tambem, mas dos exemplos que encontrei o código abaixo irá lhe servir :

Private Sub CommandButton2_Click()

Dim c As Range, a() As String, n As Long, i As Long

ListBox1.ColumnCount = 12

    With Plan1
        Set Rng = .Range("A1", .Range("A1").End(xlDown))
        
        Me.ListBox1.Clear
        
        For Each c In Rng
            n = n + 1: ReDim Preserve a(1 To 12, 1 To n)
            For i = 1 To 12
                a(i, n) = c.Offset(, i - 1).Value
            Next
        Next
    End With
    
'Preenche o Listbox
If n > 0 Then Me.ListBox1.Column = a
End Sub

Neste codigo estamos utilizando 12 colunas, é só acertar o nome da planilha e a quantidade de colunas.

Vendo o que postou acima:
De acordo com o número que ponho em um textbox, meu código trás para a listbox todas as linhas que têm apenas aquele número.
Uma outra dica seria fazer a filtragem dos dados que quer para uma outra aba e depois carregar o Listbox.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/04/2014 4:53 pm