Pergunte aqui
0

Comando em Basic para mudar planilha ativa e posicionar cursor em determinada célula

perguntadas 2018-06-04 20:28:16 +0200

imagem do gravatar de rossi

Alguém saberia informar um comando para: - alterar a planilha ativa num documento com 2 ou mais planilhas; - posicionar o cursor (foco) em determinada célula da planilha;

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

2 Respostas

0

respondidas 2018-06-04 23:33:41 +0200

updated 2018-06-04 23:44:04 +0200

Ola @rossi, Seja Bem Vindo...

Esta Macro abaixo eu uso como SubMacro.

'=========================================================================
sub IrPara (xlocal as string) 
'=========================================================================
Dim document As Object
Dim dispatcher As Object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = xlocal
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub

Para usa-la em uma Macro Principal, por exemplo:

Sub MacroPrincipal
.
.
Call IrPara "local"
.
.
End Sub

Onde "local" pode ser:

  • Nome de Planilha (Planilha1)
  • Planilha.célula (Planilha1.C2)
  • Área nomeada (Vendas)
  • Célula (C2), este não uso, para evitar pegar célula da planilha errada.

Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

editar assinalar como ofensivo Excluir Link mais
0

respondidas 2018-06-05 13:49:54 +0200

imagem do gravatar de rossi

Bom dia!

Num primeiro momento não funcionou. Posicionava sempre na célula posterior a que eu passava como parâmetro. Depois percebi o que estava ocorrendo.

A planilha dispara a macro no evento de planilha "Conteúdo Alterado", que ocorre somente após a saída da célula (TAB)e, dependendo da validação realizada pela macro, executo o "IrPara" para uma determinada célula.

Porém, o método "IrPara" é executado antes que a próxima célula receba o foco realizado pelo TAB. Assim, o método "IrPara" ocorre, porém em seguida ocorre o foco para a próxima célula disparado pela saída da célula anterior pelo TAB.

Para funcionar, fiz o "IrPara" então para a célula anterior a que eu espero que receba o foco.

De qualquer forma, foi muito útil. Agradeço.

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2018-06-04 20:28:16 +0200

Lidas: 21 vezes

Última atualização: Jun 05