Pergunte aqui
1

Como executar uma filtragem ao abrir o arquivo

perguntadas 2017-07-29 12:39:29 +0100

imagem do gravatar de Beto

updated 2017-08-20 15:26:28 +0100

imagem do gravatar de Grafeno

Preciso executar uma filtragem, relativamente simples numa coluna (F)da planilha2 onde as células que contiverem o mesmo conteúdo da planilha1, na célula A1, seja copiadas/apresentadas as linhas das mesmas para a planilha1 ou para uma janela de apresentação(uma macro mesmo).

Isto é fácil de resolver com o filtro padrão e marcar para copiar para a devida planilha, mas a macro automática não grava o procedimento... Pensei no auto filtro também, mas será uma repetição de dados com a fórmula '=', mas é uma alterntiva.

É que estou numa função com vários compromissos listados para o dia atual (fazer durante o dia), e futuros (agendados) e passados sem resolver. E de vez em quando preciso dar uma visualizada para não esquecer. Nada melhor que ao abrir o arquivo os dados sejam filtrados e apresentados.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

2

respondidas 2017-07-29 20:48:27 +0100

imagem do gravatar de Grafeno

Boa tarde,


Uma macro com o filtro padrão, para o seu caso, ficaria mais ou menos assim:

Aplica o filtro padrão na 3ª coluna do intervalo A1:H9 em Planilha2, a partir do critério localizado na célula A1 em Planilha1, e cola o resultado a partir de C2 em Planilha1. Para esta macro o critério e o campo (coluna) filtrado devem conter números ou datas.

Sub FiltroPadrao
Dim oDoc As Object, oPlan1 As Object, oPlan2 As Object
Dim vCriterio As Double, oDestino As Object
Dim oIntervalo As Object, oFiltro As Object
Dim mCamposFiltro(0) As New com.sun.star.sheet.TableFilterField

   oDoc = ThisComponent
   oPlan1 = oDoc.Sheets.getByName( "Planilha1" )
   oPlan2 = oDoc.Sheets.getByName( "Planilha2" )

   oIntervalo = oPlan2.getCellRangeByName( "A1:H9" )
   vCriterio = oPlan1.getCellRangeByName( "A1" ).Value
   oDestino = oPlan1.getCellRangeByName( "C2" ).CellAddress

   'Definir campo/criterios filtragem'
   With mCamposFiltro(0)
      .Field = 2 '3ª coluna do intervalo. Coloque 0 para a 1ª.'
      .Operator = com.sun.star.sheet.FilterOperator.EQUAL
      .IsNumeric = True
      .NumericValue = vCriterio
   End With

   'Descrição do filtro'
   oFiltro = oIntervalo.createFilterDescriptor( True )
   With oFiltro
      .ContainsHeader = True
      .CopyOutputData = True
      .OutputPosition = oDestino
      .FilterFields = mCamposFiltro
   End With

   'Aplicar o filtro padrão'
   oIntervalo.Filter( oFiltro )
End Sub

Para executar esta macro ao abrir o arquivo, associe ela ao evento Ao abrir documento, através do menu Ferramentas > Personalizar... > aba Eventos > evento 'Ao abrir documento'*.


Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

1

Brilhante, parabéns! Era exatamente o que eu queria. Abraços meu caro.

imagem do gravatar de BetoBeto ( 2017-07-31 14:49:01 +0100 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2017-07-29 12:39:29 +0100

Lidas: 32 vezes

Última atualização: Jul 29