Pergunte aqui
1

MACRO que somente seja executada se determinada aba está ativa

perguntadas 2020-09-18 17:22:57 +0200

imagem do gravatar de Jedison

updated 2020-09-18 21:28:48 +0200

imagem do gravatar de Schiavinatto

Inseri na barra de MENUS do CALC um menu específico para a minha planilha, que é composta por diversas abas, sendo que muitas delas permanecerão ordinariamente OCULTAS. Não conheço muito ainda a programação de MACROS e preciso que uma determinada macro, que está vinculada a um comando desse MENU que disponibilizei na Barra de Menus (superior) somente seja executada se a ABA ativa for a que nomeei "Novo Delito", caso contrário, exiba uma mensagem de alerta e encerre. Alguém pode me ajudar com isso? Também agradeço se alguém puder me indicar um local para consulta dos comandos e rotinas usados na programação de Macros, pois ainda tenho um pouco de dificuldade de entender como funcionam instruções como:

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "aTableName"
args2(0).Value = "Novo Delito"
dispatcher.executeDispatch(document, ".uno:Show", "", 0, args2())

Grato.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

As referencias para Basic encontra aqui:

https://ask.libreoffice.org/pt-br/que...

Sobre a Macro, estou verificando.....

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-09-18 18:14:10 +0200 )editar

1 Resposta

1

respondidas 2020-09-18 19:25:59 +0200

imagem do gravatar de Schiavinatto

updated 2020-09-18 19:32:36 +0200

Ola @Jedison, acresente estas linhas no Inicio de sua macro:

Dim PlanAtiva As Object
PlanAtiva = ThisComponent.getCurrentController.getActiveSheet()
Var1 = PlanAtiva.getName()
If Var1 = "Novo Delito" Then

E estas antes do End Sub

 Else
msgbox "Planilha ativa não e"  &chr(13)& "Novo Delito"
 EndIf

-----------------------------------------------------------------------------

ATENÇÂO:: Para dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Não use Adicionar resposta para comentário. Grato.

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

Comentários

Perfeito. Valeu (de novo) @Schiavinatto

Como a operação a ser realizada em caso positivo é complexa, no THEN coloquei um GOTO para pular para um rótulo.

E ficou assim:

sub Repor_Pena
rem Verifica se a ABA ativa é a NOVO DELITO
Dim PlanAtiva As Object
PlanAtiva = ThisComponent.getCurrentController.getActiveSheet()
PA = PlanAtiva.getName()
If PA = "Novo Delito" Then
   goto Segue_repor_pena
else Dim Msg, Estilo, Titulo, Resposta, Opcoes
Msg = "Utilize essa opção apenas no módulo adequado."
Estilo = 0                   ' Define buttons.
Titulo = "Algoritmo JEDI"    ' Define title.
MsgBox(Msg, Estilo, Titulo)
end if
goto encerra ' Se não for a planilha adequada, encerra
rem Se está na ABA correta, prossegue
Segue_repor_pena:   ' Define o Rótulo "Segue_repor_pena"
dim document   as object
dim dispatcher as object
(Restante do código e, no final:)
encerra:
end sub
imagem do gravatar de JedisonJedison ( 2020-09-18 20:32:44 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2020-09-18 17:22:57 +0200

Lidas: 16 vezes

Última atualização: Sep 18