Notifications
Clear all

Tempo recioso

4 Posts
2 Usuários
0 Reactions
808 Visualizações
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Ola

Tenho esta duas macros, uma dentro de EstaPasta_de_Trabalho e outra dentro de um modulo.

Funciona, desde que exista alguma modificacao na planilha, porem se simplemente eu sair de uma aba pra outra nao funciona.

- Possuo as abas, Venda1, Venda2 e Venda3. O que devo colocar dentro de cada uma dessas abas para quando eu estiver em algumas delas, somente estas, o modulo AutoSalva seja iniciado ?

- Caso eu modifique algo dentro dessas abas, queria que reiniciasse o tempo, mas isso nao acontece ele depois do tempo programado executa a macro mesmo assim, e me transfere para a aba Fundo2.Isso seria somente se ficasse recioso.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    IniciaTimer
End Sub

Dim alertTime As Date

Sub IniciaTimer()
    If alertTime <> 0 Then
      On Error Resume Next
      Application.OnTime EarliestTime:=alertTime, procedure:="AutoSalva", Schedule:=False
      On Error GoTo 0
    End If
    alertTime = Now + TimeValue("00:00:30")
    Application.OnTime alertTime, "AutoSalva"
End Sub

Sub AutoSalva()
 ' ActiveWorkbook.Save
 ' ActiveWorkbook.Close

Sheets("Fundo2").Activate

End Sub



 
Postado : 16/11/2016 11:53 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

fazerbem, o ideal seria você se informar sobre a diferença entre Objetos WorkBook e WorkSheet e tambem sobre os Eventos.

Voltando a sua questão, como está utilizando o Evento Private Sub Workbook_SheetChange que se refere a WorkBook (Pasta de Trabalho) e por este Evento ser SheetChange, a macro só será executada se for efetuada alguma alteração e por estar no Módulo do WorkBook ela vale para todas as Abas (WorkShhet) que contiver seu arquivo.

Quanto a rotina ser executada a nivel de WorkSheet e você diz quando sair, você tem de chamar a rotina dentro do Evento das Sheets que pretende utilizando os Eventos Activate e Deactivate (Private Sub Worksheet_Activate() ou Private Sub Worksheet_Deactivate()).

Quanto a questão do "recioso", se você quer reiniciar o tempo somente quando sair de alguma aba o ideal é construir uma nova rotina baseada na que já tem acrescentando instrução para cancelar a que está sendo executada e reiniciar o relogio.

Se interessar, de uma olhada no link abaixo que é de um curso gratuito de VBA do Julio Battisti (120 lições)
http://juliobattisti.com.br/cursos/exce ... ncipal.asp

[]s

 
Postado : 16/11/2016 1:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Complementando o que eu disse acima, você tem de tomar cuidado ao utilizar os Eventos, tem de analisar antes o que pretende para evitar erros de compilação, exemplificando :

Temos uma macro que é chamada no Evento a Nivel de WorkBook toda vez que alterar um valor em qualquer uma das Sheets da Pasta, então você resolve colocar uma roptina no Evento a Nivel de Worksheet o qual só será executado na aba que estiver, e se utilizar o Evento Activate e Deactivate para zerar o relogio e reiniciar e se após selecionar uma sheet que tenha a Rotina e você fizer alguma alteração nesta sheet, irá chamar a rotina que se encontra no evento a nivel do WorkBook, podendo entrar em conflito.

Assim, pense bem o que pretende fazer antes de realizar as alterações.

[]s

 
Postado : 16/11/2016 1:57 pm
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Dei uma olhada superficial no link , e gostei, na primeira vista entendi algumas coisas sim. Na verdade em tudo que ja aprendi somente por estar neste forum e com isso adicionei mais o youtube e outros links, estou varios passos a frente de quando comecei rsrsr. So em ter feito esta planilha que fiz con a ajuda de vcs, dos videos youtube etc ja é um bom começo. Muitas coisas que aqui aprendi, pude manipular e arrolar da minha maneira. Con isso meu conhecimento vai aumentando cada vez mais. Muitas das vezes posto aqui uma pergunta e em seguida eu mesmo a resolvo, e isso ja aconteceu inumeras vezes. Pois vou adaptando com aquilo que ja aprendi. Na verdade se eu trabalhasse com isso iria me aprofundar mais a fundo. Porem meu objetivo e terminar meu aplicativo ao qual na verdade ja esta acabado.

Mas estou bem inclinado a dar continuidade ao entendimento cada vez mais di excel e do vba, ao qual gostei muito.

Se tiver outros links uties seria bom os apresentar aqui.

Muito obrigado e vou tentar usar a dica que me passou quanto a workbook e wordsheet.

Andre

 
Postado : 16/11/2016 2:22 pm