Usuário com melhor resposta
Filtro com TextBox e ComboBox

Pergunta
-
olá sou novo por aqui e estou com uma dúvida em VBA eu tenho um Useform onde ele tem uma TextBox e uma ComboBox gostaria de fazer um filtro por exemplo com turnos ou seja na ComboBox estará os turnos Manhã, Tarde e Noite e na TextBox eu escreveria a matéria em relação a cada turno
ex.: quero os alunos do curso de portugues da manhã escolheria manhã na ComboBox e digitaria a matéria na TextBox ou Alunos de Matématica pela tarde , e o resultado da busca aparecesse em uma ListView ou ListBox alguem pode ajudar ficarei muito grato
Respostas
-
'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
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Aprendiz VBA quarta-feira, 3 de dezembro de 2014 23:54
Todas as Respostas
-
'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
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Aprendiz VBA quarta-feira, 3 de dezembro de 2014 23:54
-
'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
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
Cara Você é D+ Valeu Meu Brother Salvou Meu dia Meus Parabéns Abracos e me desculpe mas abusando da sua boa vontade se eu quisesse colocar uma textbox para aparecer o numero de alunos que estão matriculados em cada curso e turno como deveria proceder e eu consegui adcionar o nome , telefonr, curso, turno para aparecer na listbox so que está aparecendo um embaixo do outro queria que aparecesse na horizontal
ex,: ta aparecendo assim
carlos
312-4567
Potuguês
Manhã
como faço para ficar um ao lado do outro
- Editado Aprendiz VBA quinta-feira, 4 de dezembro de 2014 01:34
-
'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
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
Cara Você é D+ Valeu Meu Brother Salvou Meu dia Meus Parabéns Abracos e me desculpe mas abusando da sua boa vontade se eu quisesse colocar uma textbox para aparecer o numero de alunos que estão matriculados em cada curso e turno como deveria proceder e eu consegui adcionar o nome , telefonr, curso, turno para aparecer na listbox so que está aparecendo um embaixo do outro queria que aparecesse na horizontal
ex,: ta aparecendo assim
carlos
312-4567
Potuguês
Manhã
como faço para ficar um ao lado do outro