Ir para conteúdo
Fórum Script Brasil
  • 0

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


leonidlo costa

Pergunta

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 para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...