Pergunte aqui
0

Caixa de diaologo durante a macro

perguntadas 2019-06-10 14:22:57 +0200

imagem do gravatar de Marcelo Caldas

updated 2019-06-10 18:05:25 +0200

Bom dia, Novamente preciso de ajuda, he he.

Estou convertendo todas as minhas macros para o Basic puro (acho que é essa a nomenclatura), pois usava partes de códigos do VBA. Daí naõ conseguia colocar senhas nas macros, e com a ultima atualização do Libre, tive que mudar um bocado de coisa. Mas, to usando o seguinte comando para limpar partes da minha planilha:

  sub MAIS
  dim document   as object
  dispatcher as object
  document   = ThisComponent.CurrentController.Frame
  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
  end sub

(Antes, com duas linhas eu fazia isso)

Peguei esse comando usando o Gravar macro.

acontece que ao usá-lo ele mostra uma caixa de seleção pedindo para selecionar algumas opções.

Estava usando antes a linha

  dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

Que não me retorna caixa de diálogos. (e funciona tb muito bem.)

ao invés de

  dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())

Pelo que percebi, a segunda opção é melhor que a primeira, pois ao ClearContents e escrever fórmulas no mesmo local, costuma dar um erro onde a macro escreve a formula mas não retorna o resultado.

Por isso preciso dela mesma.

Então, Como faço pra não aparecer a caixa diálogos? tem jeito?

Muitíssimo Obrigado

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

1

respondidas 2019-06-10 15:15:43 +0200

imagem do gravatar de Júnio Vieira

Bom dia, você pode utilizar a macro a baixo que limpa o intervalo que você desejar:

Sub limpardados()

ThisComponent.Sheets.GetByName("Plan1").GetCellRangeByName("A1:C50").ClearContents(1)

End Sub

O número do clearcontents mostra que tipo de conteúdo limpar conforme tabela abaixo: Valor = 1 Data e Hora = 2 Texto = 4 Anotação = 8 Fórmula = 16 Bordas, Formatação Condicional e Formatos = 32

Esses são os principais entre outros, caso deseje apagar varios tipos basta somar os número dos tipos que vc deseja apagar, por exemplo:

Apagar valor e texto = 1 + 4 ...ClearContents(5)

Apagar data e hora, texto e fórmulas = 2 + 4 + 16 ...ClearContents(22)

editar assinalar como ofensivo Excluir Link mais

Comentários

Perfeito. Com essa linha de comando vou reduzir minha macro um bocado. Me ajudou demais. Muito Obrigado.

imagem do gravatar de Marcelo CaldasMarcelo Caldas ( 2019-06-10 16:10:39 +0200 )editar

Ola @Marcelo Caldas, gosto de reduzir macros também, uma maneira que faço, por exemplo: Coloco esta macro acima como SubMacro de macros maiores.

Sub LimparDados ( xPlan As String, xRange As String, xClear As Integer ) 
ThisComponent.Sheets.GetByName( xPlan ).GetCellRangeByName( xRange ).ClearContents( xClear )
'Limpar VALUE 1; DATATIME 2; STRING 4; ANNOTATION 8; FORMULA 16;    
'HARDATTR 32; STYLES 64; OBJECT 128; EDITATTR 256; FORMATTED 512
'Somar os valores….
End Sub

Para utiliza-la em uma macro maior faço o seguinte comando:

Sub Macro
.
.
Call LimparDados "Plan1", "A1:A5", 5
.
Ens Sub

Desta maneira consegue usar a macro dezenas de vezes apenas com uma linha.

Obs. xRange aceita, Área nomeada, Área por celulas e Célula única.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-06-10 18:02:00 +0200 )editar

achei esse complemento ào codigo do Junio Veira:

ThisComponent.Sheets(Conj).GetCellRangeByName("E2:E20000").ClearContents(1 OR 2 OR 4 OR 8 OR 16 OR 32 OR 64 OR 128 OR 256 OR 512)

Funcionou que é uma beleza.

Agora, vou adpatar a sua solução tb Gilberto.

Obrigado.

imagem do gravatar de Marcelo CaldasMarcelo Caldas ( 2019-06-11 13:36:20 +0200 )editar

no meu caso, quando vou apagar alguma coisa quero limpar tudo mesmo. uso uma mesma coluna para copiar e colar valores, formulas e tudo o mais.

imagem do gravatar de Marcelo CaldasMarcelo Caldas ( 2019-06-11 13:38:42 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-06-10 14:22:57 +0200

Lidas: 15 vezes

Última atualização: Jun 10