Usuário com melhor resposta
listbox vba execel retorona somente dados referentes a uma combobox ou textbox

Pergunta
-
Olá a todos
Preciso que minha listbox retorne somente dados referentes a uma combo box ou textbox e me conte o numero de registros.
exemplo: se eu colocar o nome André na combobox, ou textbox, a listbox so me retornará dados referentes ao andré e me mostrar quantos registros com esse nome foram encontrados (podendo ser em outra list ou textbox)
Desde ja Agradeço a atenção
Respostas
-
Sugiro a utilização do auto filtro via vba.
Você pode pegar o conteúdo da textbox, filtra-lo na sua planilha e carregar o resultados através do método additem.
Você pode gravar a utilização do auto filtro pelo gravador de macros para facilitar
- Sugerido como Resposta André Santo segunda-feira, 28 de setembro de 2015 19:57
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 5 de novembro de 2015 15:41
Todas as Respostas
-
-
olá
sim, estao: com formulario de login, administrador, respectivas planilhas, mas acho que esta ficando pesado porque começa a custar pra abri :-/
sou novo mas estou gostando muito de vba
Private Sub CONSULTA_LIMPAR_Click()
Range("H2:M200").Clear
Range("A2").Select
MsgBox "DIGITE UM PRESIDENTE DE COMISSÃO", vbInformation, "Aviso"
End Sub
Private Sub ListBox_CONSULTA1_Click()
End Sub
Private Sub TextBox_CONSULTA_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Sheets("COMISSOES").Select
If KeyCode = 13 Then ' é uma macro que é chamadaListBox_CONSULTA1.RowSource = ""
pesquisa
End If
End Sub
Sub pesquisa()
Dim n%
n = 1
Range("H2:M200").Clear
Range("a2").Select
Do While ActiveCell <> ""
If InStr(1, ActiveCell, TextBox_CONSULTA) > 0 Then
'Endereco = ActiveCell.Address
Range("h" & n).Offset(1, 0).Value = ActiveCell
Range("h" & n).Offset(1, 1).Value = ActiveCell.Offset(0, 1)
Range("h" & n).Offset(1, 2).Value = ActiveCell.Offset(0, 2)
Range("h" & n).Offset(1, 3).Value = ActiveCell.Offset(0, 3)
Range("h" & n).Offset(1, 4).Value = ActiveCell.Offset(0, 4)
Range("h" & n).Offset(1, 5).Value = ActiveCell.Offset(0, 5)
n = n + 1
End If
ActiveCell.Offset(1, 0).Select
Loop
If n > 1 Then
ListBox_CONSULTA1.RowSource = "h2:l" & n
Else
ListBox_CONSULTA1.RowSource = ""
MsgBox "Nenhum registro encontrado", vbInformation, "Aviso"
TextBox_CONSULTA = ""
Range("A2").Select
End If
End Sub
Private Sub TextBox1_Change()
Range("H2:M200").Clear
Range("A2").Select
End Sub
Private Sub UserForm_Click()
Range("H2:M200").Clear
Range("A2").Select
End Sub
' fiz tambem um formulario de cadastro
Private Sub BOTAO_GRAVAR_Click()
Worksheets("COMISSOES").Select
'Range("H2:M56537").Clear
'Abaixo criei a variavel pula linha onde irá armazenar a quantidade de linhas que foram preenchidas + 1
pulalinha = Worksheets("COMISSOES").UsedRange.Rows.Count + 1
'Aqui começa a gravaçao
' PRENCHE CAIXAS COMISSOES
If TextBox_NOME_PRESIDENTE = "" Then
MsgBox "Digite o NOME DO PRESIDENTE!"
TextBox_NOME_PRESIDENTE.SetFocus
Exit Sub
Else
If TextBox_NPAD = "" Then
MsgBox "Digite NÚMERO DO PAD!"
TextBox_NPAD.SetFocus
Exit Sub
Else
If RAMAL = "" Then
MsgBox "Digite o RAMAL DO PRESIDENTE DA COMISSÃO!"
RAMAL.SetFocus
Exit Sub
Else
If TextBox_SECRETARIO = "" Then
MsgBox "Digite TextBox SECRETÁRIO!"
TextBox_SECRETARIO.SetFocus
Exit Sub
Else
If TextBox_VOGAL = "" Then
MsgBox "Digite VOGAL!"
TextBox_VOGAL.SetFocus
Exit Sub
End If
End If
End If
End If
End If
' AGORA GRAVANDO NA PLANILHA DE COMISSOES
Cells(pulalinha, 1) = TextBox_NOME_PRESIDENTE
Cells(pulalinha, 2) = TextBox_NPAD
Cells(pulalinha, 3) = RAMAL
Cells(pulalinha, 4) = TextBox_SECRETARIO
Cells(pulalinha, 5) = TextBox_VOGAL
Range("A2").Select
' Mensagem de gravação concluida
MsgBox "Dados gravados com sucesso"
' Limpar caixa de cadastro
'TextBox_NSCOM = ""
TextBox_NOME_PRESIDENTE = ""
TextBox_NPAD = ""
RAMAL = ""
TextBox_SECRETARIO = ""
TextBox_VOGAL = ""
'COLOCAR O FOCO NO PRESIDENTE
TextBox_NOME_PRESIDENTE.SetFocus
'COMANDO PARA SALVAR O TRABALHO
ActiveWorkbook.Save
End Sub
Private Sub CommandButton1_Click()
Sheets("CONSULTA").Select
CONSULTA1.Show
Unload COMISSOES
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
'Sheet("CONSULTA").Select
Application.CutCopyMode = False
Selection.ClearContents
ListBox_CONSULTA1 = ""
End Sub
-
-
-
Sugiro a utilização do auto filtro via vba.
Você pode pegar o conteúdo da textbox, filtra-lo na sua planilha e carregar o resultados através do método additem.
Você pode gravar a utilização do auto filtro pelo gravador de macros para facilitar
- Sugerido como Resposta André Santo segunda-feira, 28 de setembro de 2015 19:57
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 5 de novembro de 2015 15:41