Página 1 de 1

Macro para trocar abas automaticamente

Enviado: 30 Nov 2015 às 17:57
por saintannna
Olá.
Gostaria de uma ajuda da comunidade.
Tenho uma planilha cujas abas precisam alternadas a cada X segundos. Como seria possível fazer isso através de uma macro?

Obrigado.

Macro para trocar abas automaticamente

Enviado: 01 Dez 2015 às 17:40
por Parkeless
Boa tarde!

O método OnTime faz isso

Exemplo: Call Application.OnTime(Now + TimeValue("00:00:05"), "Nome_da_sua_macro_aqui")

E aí você faz uma macro que alterna a aba.

Na próxima aba, você pode criar um código worksheet_activate, para que quando ela seja ativada, ative outra ontime... e daí por diante

Re: Macro para trocar abas automaticamente

Enviado: 02 Dez 2015 às 16:14
por saintannna
Parkeless, obrigado por responder.

No lugar de criar uma macro para ir para uma próxima aba, eu poderia colocar o nome da aba?

Macro para trocar abas automaticamente

Enviado: 03 Dez 2015 às 09:15
por Parkeless
Acho que dá também, tenta aí

Qualquer coisa posta a planilha com o código que você colocou, que eu dou uma olhada....

Re: Macro para trocar abas automaticamente

Enviado: 04 Dez 2015 às 14:24
por saintannna
Infelizmente não consegui.

O código que montei foi este:
Public Sub Muda_Planilha()
Call Application.OnTime(Now + TimeValue("00:00:05"), Sheets("Portal Notícias 2").Select)
End Sub

Só para contextualizar:
Tenho 4 planilhas (Portal Notícias 1, Portal Notícias 2, Portal Notícias 3, Portal Notícias 4).
Ao abrir o Excel, já existe uma macro para abrir automaticamente a aba Portal Notícias 1, em tela cheia.
Depois de 5 segundos, por exemplo, deve haver a modificação para a aba Portal Notícias 2, depois de mais 5 segundos ocorre novamente a mudança para Portal Notícias 3 e, por fim, depois de mais 5 segundos, ocorre novamente a mudança para Portal Notícias 4.
Depois de mais 5 segundos, da Portal Notícias 4, deve voltar a ser apresentada a Portal Notícias 1.

Macro para trocar abas automaticamente

Enviado: 04 Dez 2015 às 15:00
por Parkeless
A Ontime executa uma macro; não dá pra fazer direto assim como você fez

Cria uma macro que seleciona a planilha, e depois referencia ela na ontime

Algo assim:
Código: Selecionar todos
Public Sub Muda_Planilha()
Call Application.OnTime(Now + TimeValue("00:00:05"), "Muda_1")
Call Application.OnTime(Now + TimeValue("00:00:10"), "Muda_2")
Call Application.OnTime(Now + TimeValue("00:00:15"), "Muda_3")
Call Application.OnTime(Now + TimeValue("00:00:20"), "Muda_4")
End Sub

Sub Muda_1()
Sheets("Portal Notícias 1").Select
End Sub
Sub Muda_2()
Sheets("Portal Notícias 2").Select
End Sub
Sub Muda_3()
Sheets("Portal Notícias 3").Select
End Sub
Sub Muda_4()
Sheets("Portal Notícias 4").Select
End Sub

Re: Macro para trocar abas automaticamente

Enviado: 07 Dez 2015 às 15:54
por saintannna
Parkeless, novamente obrigado por ajudar.

No entanto, coloquei o código que você sugeriu dentro de "Esta pasta de trabalho", no entanto não funcionou. Você pode disponibilizar um arquivo como exemplo?

Agradeço.

Re: Macro para trocar abas automaticamente

Enviado: 07 Dez 2015 às 17:07
por Parkeless
Boa tarde,

Não é na planilha, é em um módulo mesmo.

Estou disponibilizando o arquivo; Vê se consegue adaptar aí.

Obs.: Ele vai passar por todas as abas uma vez, e vai parar. Se você quiser dar um loop (ir passando todas as abas até fechar a planilha), você pode criar um evento do tipo, caso a primeira aba seja ativada, rodar a macro.

Re: Macro para trocar abas automaticamente

Enviado: 08 Dez 2015 às 15:14
por saintannna
Era exatamente esse loop que precisava. Montei um código, mas ele não está sendo executado. Vou postá-lo aqui para análise.
Essa primeira sub é porque preciso que, além de rodar a rotina, a planilha seja aberta sempre na planilha 1 e em tela cheia.

Sub AbrirPlanilha()
Worksheet("Portal Notícias 1").Range("A1").Select
Application.DisplayFullScreen = True
End Sub

Sub Rotina()
Do While Worksheet("Portal Notícias 1").Activate
Run ("Muda_Planilha")
Loop
End Sub


Agradeço novamente.

Re: Macro para trocar abas automaticamente

Enviado: 08 Dez 2015 às 15:38
por Parkeless
Ajustei algumas coisas para o loop não bugar quando alguém trocar de aba manualmente... tenta aí

Macro para trocar abas automaticamente

Enviado: 10 Dez 2015 às 15:10
por saintannna
Parkless, deu certo. A sua dica funcionou.

Porém agora, estou com outro problema. Tem vezes em que vou abrir o arquivo e o VBA de "Esta Pasta de Trabalho" simplesmente não funciona.

Vou postar o arquivo para analisar.

Agradeço.

Ps: Existe uma outra macro que coloquei para que a hora seja atualizada de 1 em 1 segundo, Tem hora que esta macro também funciona, mas tem hora que ela não funciona. Daí, se eu for no Alt + F11, selecionar a macro e clicar no Play, ela funciona.

Macro para trocar abas automaticamente

Enviado: 10 Dez 2015 às 15:54
por Parkeless
Boa tarde!

O problema não é o nome da planilha? O código está referenciando a planilha "Portal Notícias.xlsm", mas você renomeou para "teste.xlsm"... aqui corrigi o nome, e aparentemente está funcionando

Quanto à atualização da hora, não entendi por que você está fazendo via código :?

Existem funções para isso, e o Now do VBA também é bem preciso...

Macro para trocar abas automaticamente

Enviado: 10 Dez 2015 às 16:26
por saintannna
Realmente Parkeless, o erro era o nome do arquivo. Falta de atenção de iniciante. Novamente obrigado.

Sobre a atualização da hora, foi uma macro que descobri na internet para fazer essa atualização automaticamente. Sobre o NOW do VBA, eu não o conheço. Já sobre funções, a qual você está se referindo? Além disso, como por função, a hora seria atualizada automaticamente?

Macro para trocar abas automaticamente

Enviado: 10 Dez 2015 às 16:46
por Parkeless
Olha a falta de atenção aqui também... kkk

Não tinha entendido o motivo de você ter feito a macro; pensei que era para calcular segundo a segundo manualmente. Agora eu vi que era só para aparecer os segundos conforme forem passando (é isso né? :D )

Então seu código não "calcula a hora toda hora" como pensei, mas só manda um Calculate 1x por segundo para a função AGORA atualizar o segundo. Agora tudo faz sentido :|

Depois que você alterou o nome da planilha, esse código voltou a funcionar também, ou você precisa de outro?

Macro para trocar abas automaticamente

Enviado: 10 Dez 2015 às 16:54
por saintannna
Seu raciocínio está correto. O motivo do código era só para aparecer os segundos a medida que forem passando.

Sobre o código da planilha, depois que alterei ele voltou a funcionar corretamente, só que ainda estou com o problema que, tem vezes que abro a planilha e as macros não são executadas. Nada acontece. Quando isso acontece, se eu executar as macros manualmente através do ALT+F8, as macros funcionam e a planilha fica 100%. Daí eu tenho que salvar o arquivo, abrí-lo novamente e ai tudo funciona. Mas não é garantido que, se o arquivo for fechado outra vez ou se abrir em um outro computador, ele funcione.

Macro para trocar abas automaticamente

Enviado: 10 Dez 2015 às 17:00
por Parkeless
Se for o que estou pensando, isso resolve...

Troca o código:
Código: Selecionar todos
If ActiveSheet.Index <> 1 Then: Sheets(1).Activate
Por:
Código: Selecionar todos
If ActiveSheet.Index <> 1 Then
    Sheets(1).Activate
Else
    Run "Mudar"
End If

Macro para trocar abas automaticamente

Enviado: 14 Dez 2015 às 15:43
por saintannna
Parkeless, obrigado.
A substituição resolveu o problema.