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

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;

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.

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.