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 todosPublic 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é?

)
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:
Por:
Código: Selecionar todosIf 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.