Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal!

 

Estou com um problema que para os ninjas do VBA daqui deve ser moleza de resolver.

 

Tenho uma planilha que mostra uma listagem com 3 colunas: nome, sobrenome e número.

Criei um VBA que, clicar em um botão específico, a listagem mostra um resultado específico. Por exemplo: quando eu clico no botão "João", a listagem só mostra as linhas com o nome "João".

Estou fazendo isso via AutoFilter com o VBA abaixo:

Sub filtroPessoasJoao()
    ActiveSheet.Range("tabelaPessoas").AutoFilter Field:=1, Criteria1:="João"
End Sub

Até aí tudo bem. Funciona tranquilamente.

Acontece que, sempre que eu clico no botão, aparecem aquelas setas do auto filtro (vide imagem abaixo).

image.png.c8f79c184e06891f2d3d7942c617fb42.png

 

Mesmo eu desabilitando a opção de filtro através de Dados -> Filtro, ainda assim, quando eu clico no botão, as setinhas reaparecem. Existe alguma forma de essas setas não aparecerem via VBA?

 

Já tentei fazer da forma abaixo, mas aí o auto filtro não funciona.

Sub filtroAndamentoOE1()
    ActiveSheet.Range("tabelaAndamento").AutoFilter Field:=1, Criteria1:="OE1"
    ActiveSheet.AutoFilterMode = False
End Sub

Estou mando um exemplo anexo.

 

teste filtro.zip

Postado

@Ingo M P Américo , boa tarde.

Se você quer somente que a setinha não apareça, mas o filtro continue aplicado, defina o argumento VisibleDropDown como False no método AutoFilter para cada campo.

Em seu exemplo, se você quer ocultar a seta apenas no campo Nome, poderia ter usado:

   ActiveSheet.Range("tabelaPessoas").AutoFilter Field:=1, Criteria1:="João", VisibleDropDown:=False
 

Para ocultar também a do 3ª campo - coluna "Número" (Field:=3), poderia usar:

    ActiveSheet.Range("tabelaPessoas").AutoFilter Field:=3, VisibleDropDown:=False

 

Se forem diversos campos, faça um loop considerando cada coluna...

  • Curtir 1
Postado
59 minutos atrás, Ingo M P Américo disse:

...Funciona com uma coluna.

 

Funciona com cada coluna que aplicar.

 

59 minutos atrás, Ingo M P Américo disse:

Você disse que dá pra fazer um loop. Poderias postar um exemplo?

 

Sub filtroPessoasJoao()
    Dim i As Byte
    With ActiveSheet.Range("tabelaPessoas")
      For i = 1 To .Columns.Count
         .AutoFilter Field:=i, VisibleDropDown:=False
      Next i
      .AutoFilter Field:=1, Criteria1:="João"
    End With
End Sub

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!