Beruflich Dokumente
Kultur Dokumente
VBAAgendandoaexecuodemacroscomafunoOnTime|TomsVsquezBlog
Introduo
Umanecessidademuitocomumemaplicativosutilizarcritriosdetempoparaexecuode
algumasrotinas.Estaumatarefatrivialemvriaslinguagens,maspoucospensamemutilizla
noVBAporacharmuitocomplexo,tendoqueenvolverchamadasdeAPIeoutrosrecursosmais
avanadosdalinguagem
Porm,oVBAdoMicrosoftExceldisponibilizaummtodoquefacilitaessetipodetrabalho,o
mtodoOnTime().
Oque
OmtodoOnTimeprogramaumprocedimentoparaserexecutadoemummomentoespecificado
nofuturo(sejaemumadeterminadahoradodiaouapsumaquantidadeespecficadetempo
decorrido).
AestruturadechamadafunoOnTimesefazdaseguinteforma:
Application.OnTime([EarliestTime],[Procedure],[LatestTime],[Schedule])
Argumentosdafuno:
EarliestTime
Variantnecessrio.Especificaquandovocdesejaqueesseprocedimentosejaexecutado.
Procedure
Stringnecessrio.Onomedoprocedimentoaserexecutado.
LatestTime
Variantopcional.Especificaatquandooprocedimentopodeserexecutado.Porexemplo,
seLatestTimeestiverdefinidocomoEarliestTime+30eoMicrosoftExcelnoestiveremmodo
Pronto,Copiar,RecortarouLocalizaremEarliestTimedevidoaumoutroprocedimentoestar
sendoexecutado,oMicrosoftExcelesperar30segundosparaqueoprimeiroprocedimento
termine.SeoMicrosoftExcelnoestiveremmodoProntodentrode30segundos,oprocedimento
noserexecutado.Seesseargumentoforomitido,oMicrosoftExcelesperaratqueo
procedimentopossaserexecutado.
Schedule
Variantopcional.TrueparaprogramarumnovoprocedimentoOnTime.Falseparalimparum
procedimentodefinidoanteriormente.OvalorpadroTrue.
Exemplo
ParainformaraoVBAumvalordedatavlidoparaexecuodomtodoOnTime,usasea
propriedadeNowdoVBAjuntamentecomafunoTimeValue(.Somandoasduas,
http://www.tomasvasquez.com.br/blog/microsoftoffice/vbaagendandoaexecucaodemacroscomafuncaoontime
1/3
21/12/2016
VBAAgendandoaexecuodemacroscomafunoOnTime|TomsVsquezBlog
possvelprogramaroprocedimentoparaserexecutadoquandoumaquantidadedetempo
especfica(contandoapartirdeagora)tiverdecorrido.
Casosejanecessrioinformarumahoraespecfica,porexemplo,3datarde(ou15:00),usa
seTimeValue(time)ondetimeumvalordehorainformadoatravsdeumaString.
Vejaosexemplosdecdigoabaixo:
PublicSubExecutaOnTime()
MsgBox"Opa!Executou."
EndSub
PublicSubTesteOnTime()
CallApplication.OnTime(Now+
TimeValue("00:00:10"),"ExecutaOnTime")
EndSub
ExecuteafunoTesteOnTime,deixandoocursordomousesobreele(linha5a6)eclicandoem
F5.Setudodercerto,em10segundosvocdeververestamensagem:
Pronto!ConformeconfiguramosoOnTimeparaexecutar10segundosapsahoraatual(linha6)
pois,NowretornaadataehoraatualeTimeValue(00:00:10)representaparaoVBA10
segundos,apsexecutarafunoTesteOnTime,elaprogramaafunoExecutaOnTime(linha1)
paraserexecutadanestetempo.
Paraefeitosdeteste,configureoutrosvaloresdetempo,mastomeocuidadoquesejam
pequenospois,seconfigurarparaexecutardaquia24horas(24:00:00),vaiterqueesperarum
bomtempo.
ParafazeroutrotesteinteressantedoOnTime,mudeocdigoparaficardestaforma:
PublicSubExecutaOnTime()
MsgBox"Opa!
Executou."
EndSub
PublicSubTesteOnTime()
CallApplication.OnTime(TimeValue("13:00:00"),
"ExecutaOnTime")
EndSub
Daformaqueest,ocdigoirconfigurarafunoExecutaOnTime(linha1)paraserexecutada
snaprxima13:00docomputadoremqueestsendoexecutada.Comoesteapenasum
exemplo,configureumahoraqueestivermaisprximaparanoesperarmuito.
possveltambmcancelaraexecuodeumamacroagendadacomoOnTime.Oexemplode
cdigoabaixocancelaadefiniodeOnTimedoexemploanterior,ouseja,casoaexecuoda
funoExecutaOnTimeestiveragendada,executarafunoCancelaOnTimefarcomqueesta
programaosejacancelada.issofeitopassandoovalorFalseparaoparmetroSchedule
(linha10):
http://www.tomasvasquez.com.br/blog/microsoftoffice/vbaagendandoaexecucaodemacroscomafuncaoontime
2/3
21/12/2016
VBAAgendandoaexecuodemacroscomafunoOnTime|TomsVsquezBlog
PublicSub</span>ExecutaOnTime()
MsgBox"Opa!Executou."
EndSub
PublicSubTesteOnTime()
CallApplication.OnTime(TimeValue("13:00:00"),
"ExecutaOnTime")
EndSub
PublicSub</span>CancelaOnTime()
CallApplication.OnTime(EarliestTime:=TimeValue("13:00:00"),
Procedure:="ExecutaOnTime",Schedule:=False)
EndSub
Concluso
Comesterecursoemmos,possvelatenderaalgumasnecessidadesquenocontextodoExcel
pareciaminviveis.UmexemplotpicoumateladeapresentaoouSplashScreencomo
conhecidaqueapresentaoprogramaefechaemalgunssegundos.Esteumbomtestepara
experimentarousodoOnTime.Ficaaumdesafio.
http://www.tomasvasquez.com.br/blog/microsoftoffice/vbaagendandoaexecucaodemacroscomafuncaoontime
3/3