Limpar celulas selecionadas

Olá pessoal, estou precisando criar em VBA uma macro que selecione algumas células e limpe o conteúdo. Será que alguém pode me mostrar um exemplo. Grato pela atenção, fico no aguardo.

Olá,


Segue a minha sugestão:
Sub LimparCelulas
Dim oDoc As Object, oPlan As Object

   oDoc = ThisComponent
   oPlan = oDoc.Sheets.getByName("Orcamento")
   
   'Limpar intervalo'
   'Argumento: 7 = 1 + 2 + 4 (Valor + Texto + Data/Hora)'
   oPlan.getCellRangeByName("B14:J33").ClearContents( 7 )
End Sub

Para encurtar a história, ao invés de usar ClearContents( com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.STRING ) é possível colocar ClearContents( 7 ). Substituímos cada constante ou flag pelo valor que ela representa, somamos e passamos para o método ClearContents.


Atte,

Meu voto e minha pergunta complementar: como faria para deletar dentro da planilha “Orcamento” um espaço nomeado? vou fazer esta pergunta nova no ask depois, ok?

Ôpa, não precisa mais, foi só trocar a especificação das células pelo nome do intervalo. Valeu, mesmo.

Muito obrigado senhores, agora deu certo! Como faz bem compartilhar conhecimento.

Segue exemplo. A mesma funciona no LibreOffice e Excel

> Rem Attribute VBA_ModuleType=VBAModule
> Option VBASupport 1
> 
> Sub ApagarInformacoes ()
> 
> Worksheets("Plan1").Range("B3").ClearContents
> Worksheets("Plan1").Range("A6:B31").ClearContents
> Worksheets("Plan1").Range("D6:W31").ClearContents
> 
> End Sub

Espero que ajude

Olá Conrado, muito obrigado meu amigo pela atenção, mas não funcionou. Talvez ou passo tela declaro de forma errada. Veja a minha declaração:

Sub LimparCelulas

Worksheets("Orcamento").Range("B14:J33").ClearContents

End Sub

Mensagem de erro: “Erro em tempo de execução do BASIC. Procedimento Sub ou procedimento de Function não definido.”

Vou tentar te passar o que eu estou buscando fazer. Já consegui fazer um filtro com macros, conforme segue abaixo.

Sub AplicarFiltroAvancado

Dim oDoc As Object, oPlanAtiva As Object, oPlan1 As Object, oPlan2 As Object, oPlan3 As Object
Dim oIntervalo As Object, oCriterios As Object
Dim oDestino As Object, oFiltro As Object, oFiltroVazio As Object

oDoc = ThisComponent
   oPlanAtiva = oDoc.CurrentController.ActiveSheet
   oPlan1 = oDoc.Sheets.getByName("Orcamento")
   oPlan2 = oDoc.Sheets.getByName( "Consulta" )
   oPlan3 = oDoc.Sheets.getByName("Acessorios")
   
   oFiltroVazio = oPlan3.createFilterDescriptor( True )
   oPlan3.Filter( oFiltroVazio )
     
   oIntervalo = oPlan3.getCellRangeByName( "B5:F1048576" )
   oCriterios = oPlan3.getCellRangeByName( "E2:E3" )
   oDestino = oPlan2.getCellRangeByName( "A1" )
   
   oFiltro = oCriterios.createFilterDescriptorByObject( oIntervalo )
   oFiltro.CopyOutputData = True
   oFiltro.OutputPosition = oDestino.CellAddress
   oFiltro.ContainsHeader = True

   'Filtrar'
   oIntervalo.Filter( oFiltro )
      
   
End Sub

O filtro está funcionando corretamente. Agora eu preciso que, ao acionar o filtro as células (B14:J33) da planilha (“Orcamento”) sejam limpas.

Grato pela ajuda!

O primeiro trecho é VBA puro e tem de ser precedido pela instrução Option VBASupport 1. Caso contrário o Basic não sabe o que é Worksheets

Eu ainda estou estudando como se programa em OpenOffice. (Meio complicado em relação ao Excel)

Tente isso. Declare a Variável da Planilha Orcamento.

    oSheet.getByName(sSheetName).getCellRangeByName(sCellRange).ClearContents(com.sun.star.sheet.CellFlags.VALUE)
oSheet.getByName(sSheetName).getCellRangeByName(sCellRange).ClearContents(com.sun.star.sheet.CellFlags.STRING)
oSheet.getByName(sSheetName).getCellRangeByName(sCellRange).ClearContents(com.sun.star.sheet.CellFlags.DATETIME

Segue um site com as explicações para limpar informações das células com base em sua range

Há documentação em portuguẽs pra ajudar também: http://documentation.libreoffice.org/pt-br/portugues/macros/