Jump to content
Fórum Script Brasil
  • 0

não consigo fazer pesquisa automatica no excel pesquisando por valores numericos.


leonidlo costa

Question

Oi, pessoal.

Estou com um problema em uma fórmula VBA. Nesta fórmula, há uma TextBox. Ao inserir uma informação nesta TextBox, a macro filtra automaticamente todos os valores encontrados. Até agora, está funcionando, mas apenas quando altero para a coluna 2, que é a coluna da descrição do material. No entanto, o que eu preciso é filtrar pelo código do item que está na coluna 1. Acredito que seja porque esta macro está programada para pesquisar apenas por textos, mas preciso filtrar por números.

Já tentei de todas as formas, mas não consegui executar a macro conforme necessito.

Alguém consegue me ajudar ou dar uma dica?

Segue o código:

 

Private Sub txtlist_Change()

    If txtlist.Value <> "" Then
           ActiveSheet.ListObjects("estoque").Range.AutoFilter Field:=1, Criteria1:= _
               "=*" & txtlist.Value & "*", Operator:=xlAnd
       Else
           ActiveSheet.ListObjects("estoque").Range.AutoFilter Field:=1
       End If

End Sub
 

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

@leonidlo costa boa noite.
Parece que o problema está na forma como você está usando a função AutoFilter e a tentativa de filtrar números como se fossem texto. Se a coluna 1 contém códigos de itens e você deseja filtrar por números, pode ser necessário ajustar a forma como você configura o critério de filtragem. Aqui está uma versão modificada do seu código que tenta lidar com números:

Private Sub txtlist_Change()
    If txtlist.Value <> "" Then
        ' Verifica se o texto inserido é um número
        If IsNumeric(txtlist.Value) Then
            ' Se for um número, filtra a coluna 1 com critério numérico
            ActiveSheet.ListObjects("estoque").Range.AutoFilter Field:=1, Criteria1:=CLng(txtlist.Value)
        Else
            ' Se não for um número, filtra como texto
            ActiveSheet.ListObjects("estoque").Range.AutoFilter Field:=1, Criteria1:= _
                "=*" & txtlist.Value & "*", Operator:=xlAnd
        End If
    Else
        ' Se o campo estiver vazio, remove todos os filtros
        ActiveSheet.ListObjects("estoque").Range.AutoFilter Field:=1
    End If
End Sub

Essa versão do código primeiro verifica se o texto inserido na TextBox é um número usando a função IsNumeric. Se for um número, o filtro é aplicado usando o valor convertido para inteiro (CLng). Se não for um número, o filtro é aplicado como antes, tratando-o como texto.

Espero que isso ajude a resolver o problema!


 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.9k
×
×
  • Create New...