Pergunte aqui
1

Como fazer Macro de Filtro Avançado no Calc ?

perguntadas 2017-02-25 15:44:17 +0200

imagem do gravatar de tarcisiopimenta07

updated 2018-06-20 20:37:32 +0200

Bom dia, preciso usar o filtro avançado no calc, por meio de macro, porem nao consegui ainda fazê-la. Quero que seja o mesmo funcionamento do excel. segue exemplo

Sub Filtrar()
        Sheets("Plan2").Columns("A:F").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("B1:G2"), CopyToRange:=Range("B7:G7"), Unique:=False
End Sub

tem como converter pro calc? Desde já agradeço.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

1

respondidas 2017-02-26 15:03:40 +0200

imagem do gravatar de Grafeno

Bom dia,

Veja se é isso:

Sub FiltroAvancado
Dim oDoc As Object, oPlanAtiva As Object, oPlan2 As Object
Dim oIntervalo As Object, oCriterios As Object
Dim oDestino As Object, oFiltro As Object

   oDoc = ThisComponent
   oPlanAtiva = oDoc.CurrentController.ActiveSheet
   oPlan2 = oDoc.Sheets.getByName( "Planilha2" )

   oIntervalo = oPlan2.getCellRangeByName( "A1:F1000000" )
   oCriterios = oPlanAtiva.getCellRangeByName( "B1:G2" )
   oDestino = oPlanAtiva.getCellRangeByName( "B7" )

   oFiltro = oCriterios.createFilterDescriptorByObject( oIntervalo )
   oFiltro.CopyOutputData = True
   oFiltro.OutputPosition = oDestino.CellAddress
   oFiltro.ContainsHeader = True

   'Filtrar'
   oIntervalo.Filter( oFiltro )
End Sub

Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

Funcionou muito bem, só que la no excel tem aquela opção "Unique:=False"(que retornas os valores ao pesquisar só uma letra por exemplo), como fazer esta opcao no calc???

imagem do gravatar de tarcisiopimenta07tarcisiopimenta07 ( 2017-03-01 13:43:49 +0200 )editar
1

Tente o seguinte: vá em Ferramentas >> Opções >> LibreOffice Calc - Calcular >> (Desmarque) "Critérios de pesquisa = e <> devem ser aplicados ao conteúdo integral das células"

imagem do gravatar de GrafenoGrafeno ( 2017-03-01 15:13:55 +0200 )editar

bom dia! aproveitando o gancho, sabem como converter para o Calc a macro do Excel abaixo?

'RetirarFiltros
    On Error GoTo erro 'Evitar erro de filtro
        ActiveSheet.ShowAllData 'Retirar todos os filtros
erro: 'Completa a ação de evitar erro
imagem do gravatar de OrlandoOrlando ( 2017-03-01 15:29:19 +0200 )editar

Deu certo Grafeno, Muito Obrigado!!!

imagem do gravatar de tarcisiopimenta07tarcisiopimenta07 ( 2017-03-01 18:10:30 +0200 )editar

Olá, Gostaria de um auxilio para rodar esta macro. Percebi que a copia dos dados filtrados não é executado se o destino não estiver na célula "A1".

oDestino = oPlanAtiva.getCellRangeByName( "A1" )

O exemplo acima com o endereço de destino para a celula "B7" não funciona.

Penso que o autor seria @Grafeno.

imagem do gravatar de UsuarioUsuario ( 2019-03-14 13:50:48 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

2 seguidores

Estatísticas

Perguntadas: 2017-02-25 15:44:17 +0200

Lidas: 705 vezes

Última atualização: Jun 20 '18