Notifications
Clear all

Configurar ListBox

6 Posts
2 Usuários
0 Reactions
1,811 Visualizações
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

olá a todos estou com o seguinte código que esta do jeito que eu quero "a filtragem" so que na ListBox fica aparecendo um embaixo do outro e eu quero um do lado do outro e que na TextBox logo abaixo do ListBox aparecesse a quantidade de alunos
ajudem-me por favor

'Este código deve residir no módulo de um formulário contendo:
'ComboBox1 - caixa de combinação que lista matérias
'ComboBox2 - caixa de combinação que lista turnos
'ListBox1 - caixa de listagem que lista alunos, resultantes de uma pesquisa

'Considere que na coluna A possui o nome dos alunos, na B o nome
'das matérias de cada aluno e na coluna C o turno das aulas.
'A planilha deve conter uma linha de cabeçalho.

'Altere aqui para o nome da planilha que possui os dados:
Const mcsSheetName As String = "Plan1"

Dim moSheet As Excel.Worksheet
Dim mlLast As Long

Private Sub UserForm_Initialize()
Dim clc As VBA.Collection
Dim s As String
Dim l As Long

Set moSheet = ThisWorkbook.Worksheets(mcsSheetName)
Set clc = New VBA.Collection
With moSheet
mlLast = .Cells(.Rows.Count, "B").End(xlUp).Row

'Armazena numa coleção todas as matérias disponíveis:
On Error Resume Next
For l = 2 To mlLast
s = .Cells(l, "B")
clc.Add s, s
Next l
On Error GoTo 0
'Povoa a caixa de combinação de matérias:
For l = 1 To clc.Count
ComboBox1.AddItem clc(l)
Next l
End With

'Preencher caixa de combinação de turno:
ComboBox2.AddItem "Manhã"
ComboBox2.AddItem "Tarde"
ComboBox2.AddItem "Noite"
End Sub

Private Sub CommandButton1_Click()
Dim clc As VBA.Collection
Dim l As Long
Dim s As String

ListBox1.Clear
Set clc = New VBA.Collection
With moSheet
'Armazena numa coleção todos os alunos disponíveis:
For l = 2 To mlLast
If .Cells(l, "B") Like "*" & ComboBox1 _
And .Cells(l, "C") Like "*" & ComboBox2 Then
On Error Resume Next
s = .Cells(l, "A")
clc.Add s, s
On Error GoTo 0
End If
Next l
'Povoa a caixa de listagem de alunos:
For l = 1 To clc.Count
ListBox1.AddItem clc(l)
Next l
End With
End Sub

 
Postado : 04/12/2014 8:22 am
 Dias
(@dias)
Posts: 7
Active Member
 

aprendiz to tentando fazer uma coisa aqui no seu codigo pra ajudar

 
Postado : 17/12/2014 11:40 am
 Dias
(@dias)
Posts: 7
Active Member
 

fiz alguma coisa diferente do seu codigo.
da uma olha pra ver se ajuda.

listar todos eu ja implementei em alguns lugares, mas com filtros nunca fiz.
tenssu que não domino muito bem essa parte de lista/combo.
vc vai ver que estou pecando mesmo na hora de add, pois ao invés de adicionar mais um eu to atribuindo novo valor a lista. Ficou assim pq não sei como fazer.

ele percorre todas e ate conta certinho

OBS: tive que colocar a primeira coluna como um ID de tabela pra pesquisar mais facil.

 
Postado : 17/12/2014 1:38 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

Brother desculpa so responder agora ficou bom da para eu adaptar na minha planilha pelo menos ja tenho uma base de como vai ser valeu obrigado

 
Postado : 17/12/2014 2:32 pm
 Dias
(@dias)
Posts: 7
Active Member
 

Matutei mais um pouco e dei uma olhada em outros foruns e agora si ta fazendo como vc queria.

é muito simples nem acredito que fiquei apanhando para o addItem

Ja esta no arquivo que to enviando agora mas basicamente é isso.

Set clc = New VBA.Collection
With moSheet
'Armazena numa coleção todos os alunos disponíveis:
For l = 2 To mlLast
If .Cells(l, "C") Like "*" & ComboBox1 _
And .Cells(l, "D") Like "*" & ComboBox2 Then

On Error Resume Next

Sheets("Controle").Select
.Cells(l, "A").Select
a = .Cells(l, "A")

Sheets("Controle").Select
.Cells(l, "B").Select
b = .Cells(l, "B")

Sheets("Controle").Select
.Cells(l, "C").Select
c = .Cells(l, "C")

Sheets("Controle").Select
.Cells(l, "D").Select
d = .Cells(l, "D")

Sheets("Controle").Select
.Cells(l, "E").Select
e = .Cells(l, "E")

With listPedido

.ColumnCount = 5

.AddItem
.List(contar, 0) = a
.List(contar, 1) = b
.List(contar, 2) = c
.List(contar, 3) = d
.List(contar, 4) = e

End With

 
Postado : 17/12/2014 2:59 pm
(@aprendiz)
Posts: 80
Trusted Member
Topic starter
 

olá a todos estou com o seguinte código que esta do jeito que eu quero "a filtragem" so que na ListBox fica aparecendo um embaixo do outro e eu quero um do lado do outro e que na TextBox logo abaixo do ListBox aparecesse a quantidade de alunos
ajudem-me por favor

'Este código deve residir no módulo de um formulário contendo:
'ComboBox1 - caixa de combinação que lista matérias
'ComboBox2 - caixa de combinação que lista turnos
'ListBox1 - caixa de listagem que lista alunos, resultantes de uma pesquisa

'Considere que na coluna A possui o nome dos alunos, na B o nome
'das matérias de cada aluno e na coluna C o turno das aulas.
'A planilha deve conter uma linha de cabeçalho.

'Altere aqui para o nome da planilha que possui os dados:
Const mcsSheetName As String = "Plan1"

Dim moSheet As Excel.Worksheet
Dim mlLast As Long

Private Sub UserForm_Initialize()
Dim clc As VBA.Collection
Dim s As String
Dim l As Long

Set moSheet = ThisWorkbook.Worksheets(mcsSheetName)
Set clc = New VBA.Collection
With moSheet
mlLast = .Cells(.Rows.Count, "B").End(xlUp).Row

'Armazena numa coleção todas as matérias disponíveis:
On Error Resume Next
For l = 2 To mlLast
s = .Cells(l, "B")
clc.Add s, s
Next l
On Error GoTo 0
'Povoa a caixa de combinação de matérias:
For l = 1 To clc.Count
ComboBox1.AddItem clc(l)
Next l
End With

'Preencher caixa de combinação de turno:
ComboBox2.AddItem "Manhã"
ComboBox2.AddItem "Tarde"
ComboBox2.AddItem "Noite"
End Sub

Private Sub CommandButton1_Click()
Dim clc As VBA.Collection
Dim l As Long
Dim s As String

ListBox1.Clear
Set clc = New VBA.Collection
With moSheet
'Armazena numa coleção todos os alunos disponíveis:
For l = 2 To mlLast
If .Cells(l, "B") Like "*" & ComboBox1 _
And .Cells(l, "C") Like "*" & ComboBox2 Then
On Error Resume Next
s = .Cells(l, "A")
clc.Add s, s
On Error GoTo 0
End If
Next l
'Povoa a caixa de listagem de alunos:
For l = 1 To clc.Count
ListBox1.AddItem clc(l)
Next l
End With
End Sub

 
Postado : 04/01/2015 11:29 am