Sie sind auf Seite 1von 3

21/12/2016

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

Das könnte Ihnen auch gefallen