Olá,
Na caixa de listagem é preciso macro, mas existem alternativas que dispensam código como:
O controle Botão de Pressão pode abir links também, desde que se alterem duas de suas propriedades para:
- Ação: "Abrir documento/página da Web"
- Link: "#Início.A1" (Exemplo: irá para/selecionará a planilha "Início" célula "A1")
Com macro (complemento da resposta):
A macro abaixo deve ser associada ao evento " Alterado " das caixas de listagem lstLocais de cada guia (aba) de planilha, assumindo que:
- o conteúdo da caixa de listagem refere-se a nomes de planilhas (guias);
- cada planilha terá uma réplica da caixa de listagem lstLocais.
Sub lstLocais_Alterado( oEvento ) ' Caixa de Listagem > Eventos > Alterado
Dim olstLocais As Object, olstLocaisView As Object
Dim oDoc As Object, oControlador As Object
Dim oPlanDestino As Object
Dim sAtual As String, sEscolha As String
' Obter o Controlador
oDoc = ThisComponent
oControlador = oDoc.CurrentController
' Nome da planilha atual
sAtual = oControlador.getActiveSheet.Name
' Model (Modelo) do Listbox que disparou o evento
' Model descreve a aparência, o comportamento
' e apresenta os dados do controle
olstLocais = oEvento.Source.Model
' Escolha do usuário no listbox
sEscolha = olstLocais.CurrentValue
' Se escolher a planilha atual não fazer nada
If sEscolha = sAtual Then Exit Sub
' View (Visão) do Lisbox que disparou o evento
' View é o que usuário vê do controle e
' por onde interage através do(s) controlador(es)
olstLocaisView = oControlador.getControl( olstLocais )
' Retornar a seleção para a planilha atual "antes de sair"
olstLocaisView.selectItem( sAtual,True )
' Ir para planilha escolhida
oPlanDestino = oDoc.Sheets.getByName( sEscolha )
oControlador.setActiveSheet( oPlanDestino )
End Sub
Atte,
@Gilberto Schiavinatto, ok então. Mas estes locais estão dentro de uma mesma planilha (p. ex. são nomes de intervalos) ou são guias (planilhas) diferentes. Se forem guias diferentes, haverá uma caixa de listagem similar em cada uma?
E isso @Grafeno, pode ser intervalos ou abas (aqui a caixa seria duplicada nas abas), por enquanto é para descobrir como montar, para possível uso futuro. Sei que com o Open/LibreOffice é possível montar aplicativos excelentes, veja esta mexicana em https://facturalibre.net,
@Gilberto Schiavinatto, completei minha resposta para incluir uma solução por macro. Espero que seja de ajuda!
Esta "fatura livre" do mexicano Mauricio Baeza é um excelente exemplo do que é possível fazer com o Calc e programação Basic. Outra contribuição sensacional deste é seu livro Aprendiendo OOoBasic. Inclusive o capítulo 10 é um passo a passo da construção dessa "fatura libre".