Ir ao conteúdo
  • Cadastre-se

Macro para listar busca em combobox


Posts recomendados

Olá pessoas, preciso que por favor vocês me deem uma ajudinha...

 

Eu tenho uma planilha de cadastro contendo as informações em cada coluna

NOME DO RESPONSAVEL

NOME DO ANIMAL

ANIMAL

 

A ideia seria fazer uma busca pelo nome do responsável

 

Para buscar, a planilha conta com essa macro

Private Sub CommandButton1_Click()

Dim sht As Worksheet
  Dim strReferencia As String
  Dim busca As Range
  
  Set sht = ThisWorkbook.Sheets("Plan2")
  strReferencia = ComboBox1
  Set busca = sht.Range("A2:A1048576").Find(strReferencia, lookat:=xlWhole)
  
  If Not busca Is Nothing Then

    ComboBox1.Value = sht.Cells(busca.Row, 1).Value
    TextBox2.Value = sht.Cells(busca.Row, 2).Value
    TextBox1.Value = sht.Cells(busca.Row, 3).Value

    End If
End Sub

Porém nos casos de responsáveis repetidos, ele sempre acaba retornando o primeiro nome da planilha de cadastro

O que eu gostaria de saber é, se por exemplo, eu buscar o "JOÃO DA SILVA" e já tiver 2... Se teria como listar todos eles(JOÃO) na busca da Combobox ?

 

*(Como é um exemplo, um numero de registro único não seria válido na original)

 

Obrigada ^^

 

IMGPLANBASE.png

PLANBASE.xlsx

Link para o comentário
Compartilhar em outros sites

@Regiane Almeida neste exemplo, eu alterei as propriedades do combobox para 3 colunas, 

mostrando 3 colunas no combobox, para poder selecionar alem do nome do responsavel, nome do animal e o tipo de animal.

Ai voce pode selecionar especificamente e a busca vai comparar a a 1ª e a 2ª coluna do combobox.

Se voce estiver utilizando a propriedade RowSource da combobox, desconsidere-a pois o codigo baixo faz o carregamento dos dados 

 

Option Explicit

Private Sub ComboBox1_Change()
CommandButton1 = True
End Sub

Private Sub CommandButton1_Click()
    Dim sht As Worksheet
    Dim strReferencia As String, busca As Range, firstAddress As String

    Set sht = ThisWorkbook.Sheets("Plan2")
    strReferencia = ComboBox1.Text
    Set busca = sht.Columns(1).Find(strReferencia, LookIn:=xlValues, lookat:=xlWhole)

    If Not busca Is Nothing Then
        firstAddress = busca.Address
        Do

            If busca.Offset(, 1) = ComboBox1.Column(1) Then
            
                ComboBox1.Value = sht.Cells(busca.Row, 1).Value
                TextBox2.Value = sht.Cells(busca.Row, 2).Value
                TextBox1.Value = sht.Cells(busca.Row, 3).Value
                                
                Exit Do
                
            End If

            Set busca = sht.Columns(1).FindNext(busca)
        Loop While Not busca Is Nothing And busca.Address <> firstAddress

    End If

End Sub

Private Sub UserForm_Initialize()
' carrega os dados do combobox
Dim rng As Range, c As Range, last As Long

With ThisWorkbook.Sheets("plan2")
last = .Cells(Rows.Count, 1).End(xlUp).Row
Set rng = .Range("A2:A" & last)
With Me.ComboBox1
.ColumnCount = 4
.ColumnWidths = "98;80;65;0"
.Font.Size = 9.5
.ListWidth = 245
For Each c In rng
.AddItem
.List(.ListCount - 1, 0) = c
.List(.ListCount - 1, 1) = c.Offset(, 1)
.List(.ListCount - 1, 2) = c.Offset(, 2)
Next
End With
End With

End Sub

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...