Macro realizando filtro ao digitar

Olá, Pessoal!

Eu gostaria de que o filtro fosse realizado,
quando eu digitasse numa “caixa de texto” no
topo (primeira linha) da planilha.

Encontrei um código no link abaixo e fiz todas as
modificações necessárias (eu acho :grimacing:).
Ainda assim, dá erro!

Filter via Macro

Segue uma planilha modelo:
Realizando filtro ao digitar (28.6 KB)

.

Grato pela atenção!
Orlando Souza
:face_with_monocle:

Se já tem Autofiltro, para que complicar…

Explique melhor como vai usar…

Exatamente! O código trata da mesma aplicação.
Só que de uma forma instantânea (sem precisar
seguir uma rotina para obter o mesmo resultado).
.
Na minha planilha principal para a atualização
de pesquisa de preços digitados ao longo dos anos
com mais de cinco mil linhas e dezenove colunas,
eu quero começar pesquisando as PRIMEIRAS LETRAS
da palavra “ESPORTE” para fornecedores de artigos
esportivos, por exemplo, na “caixa de texto”
configurada com o código e já obtendo o resultado
com o filtro das linhas que contém aquelas primeiras
letras e/ou texto.

Aparentemente tem uma inconsistência na linha 13, onde seu formulário está nomeado como “Formulário” e no seu código está nomeado como “Form”:

oCtrl = oSheet.drawPage.Forms.getByName(“Form”).getByName(“TextBox1”)

Vocẽ tem duas opções, ou renomeia seu formulário ou substitui “Form” por “Formulário”.

Na mesma linha o nome do seu objeto “TextBox1” está dando conflito com algum outro objeto, portanto é recomendável renomeá-lo.

Não sei se é essa sua dúvida, mas foi o que identifiquei a princípio.

filtro-ao-digitar.ods (34.4 KB)

1 Like

:grinning: :+1: Tem razão! Preciso melhorar o meu inglês!
.
Eu estou sem conseguir retornar todas as linhas na tabela,
após limpar a “caixa de texto” na col B, como acontece na col A
de arquivo abaixo:
Como retornar todas as linhas após limpar o texto.ods (28.7 KB)

Ola @OrlandoS, testei e quando limpo a caixa de textoB, tudo volta…

No meu, não voltam as linhas vazias
Estou usando a versão: LibreOffice 7.6.4.1 (x86) pt-BR
.
Se eu excluir a col A, todas as linhas vazias voltam a
aparecer após limpar a caixa TextBox2. :thinking:

Ops, reparei agora, as vazias não voltam…

Tem algo no código que amarra com as linhas na col A qualquer alteração dentro da TextBox2 na col B.

Até uma solução melhor, eu vou acrescentar na caixa TxtBox2 o evento “Ao receber o foco” de código abaixo:

Sub RemoverFiltroPlan()
  Dim oSheet         	 'Planilha a filtrar
  Dim oFilterDesc     'Descritor de filtro
 
  oSheet = ThisComponent.getSheets().getByIndex(0)
  oFilterDesc = oSheet.createFilterDescriptor(True)
  oSheet.filter(oFilterDesc)
End Sub

Fonte: Filters - Apache OpenOffice Wiki