Jump to content
Tiago Grego Miguel

Formulário de Pesquisa VBA Filtro automático

Recommended Posts

Tiago Grego Miguel

Boa noite, desde já aviso que percebo muito pouco de visual basic e ando a tentar executar umas macro no excel para facilitar o trabalho.

Neste momento tenho uma base de preços numa sheet do excel e criei um formulário com um listbox e duas caixas de texto para realizar procura automática.

O problema que tenho, é que a procura apenas de cinge à primeira palavra do campo onde procura, nunca vai procurar a combinação de caracteres ás restantes palavras. Não sei se me fiz entender, mas vou deixar aqui o código para ver se alguém me consegue ajudar. Obrigado desde já.

Sub FILTRO()
 On Error GoTo Erro
 Dim linha, linhalist As Integer
 Dim valor_celula As String
 
 linhalist = 0
 linha = 2
 
 bdcdo.Clear
 
'ORCABDCDO.Select - Vinha com o código original, mas fazia saltar de folha.

 With ORCABDCDO
    
    While .Cells(linha, 1).Value <> ""
    
    valor_celula = .Cells(linha, 1).Value
        If UCase(Left(valor_celula, Len(codigo.Text))) = UCase(codigo.Text) Then
        
    valor_celula = .Cells(linha, 2).Value
        If UCase(Left(valor_celula, Len(design.Text))) = UCase(design.Text) Then
    
    Me.bdcdo.ColumnWidths = "60;200;40;60"
    
    With bdcdo
    .AddItem
    .List(linhalist, 0) = ORCABDCDO.Cells(linha, 1)
    .List(linhalist, 1) = ORCABDCDO.Cells(linha, 2)
    .List(linhalist, 2) = ORCABDCDO.Cells(linha, 3)
    .List(linhalist, 3) = Format(ORCABDCDO.Cells(linha, 4), "currency")
    End With
    
    linhalist = linhalist + 1
    
    End If
    End If
    
    linha = linha + 1
    
    Wend
End With

 Exit Sub
Erro:
MsgBox "Erro!", vbCritical, "filtro"

 
End Sub

Private Sub codigo_Change()

Call FILTRO

End Sub

Private Sub design_Change()

Call FILTRO

End Sub

Private Sub UserForm_Click()

End Sub

 

Share this post


Link to post
Share on other sites
Gnrtuga

Boas, em primeiro lugar devias ter inserido o código usando o ícone <> que é para facilitar a leitura de quem te quer ajudar :)

Segundo não percebi bem o que queres, ajudava se colocasses um exemplo (mesmo que não seja real) e qual o resultado esperado.

Por fim acho que percebi o porquê de não te estar a dar o resultado esperado, nesta parte do código:

 valor_celula = .Cells(linha, 1).Value
        If UCase(Left(valor_celula, Len(codigo.Text))) = UCase(codigo.Text) Then
        
    valor_celula = .Cells(linha, 2).Value
        If UCase(Left(valor_celula, Len(design.Text))) = UCase(design.Text) Then

Se o primeiro if é verdadeiro ele já não vai verificar o segundo, por isso talvez queiras usar um elseif em lugar do 2º if.

Boa sorte 


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.