Objetivo: Demonstrar a utilização do agendamento de processos no Excel. Neste exemplo é criada uma agenda que fala quando á tarefas pendentes.
Neste exemplo você tem a demonstração do uso de várias técnicas explicadas em vários artigos no Guia do Excel.
Foram utilizados:
Além das técnicas acima foi utilizado um recurso ainda não explicado, o Agendamento de execuções no Excel
Este procedimento executa um procedimento que é chamado em determinado horário conforme abaixo, no exemplo abaixo é chamado o procedimento MyMacro disparado ás 15:00.
Application.OnTime TimeValue("15:00:00"), "MyMacro"
Na planilha observando o código fonte você verá o exemplo de um agendamento recursivo dos dados que foi baseado em um exemplo exibido no livro VBA e Macros para Microsoft Excel 2007 de Bill Jelen e Tracy Syrstad.
O objetivo do agendamento na planilha é realizar a atualização da planilha a cada dois minutos, realizando um novo agendamento a cada execução do procedimento.
Abaixo o código fonte com os comentários:
Public Sub lsExecutaAtualizacao()
Dim lRange As Range
Set lRange = Selection
'Atualiza o horário na planilha
ActiveWorkbook.RefreshAll
Range("F1").Select
ActiveCell.FormulaR1C1 = "=NOW()"
lRange.Select
'Realiza a identificação se há alguma tarefa em aberto
If Range("E1").Value > 0 Then
'Aqui você pode escolher a execução do alarme ou
'de um alerta de voz da quantidade de agendamentos
'Caso queira o alarme, descomente o código abaixo e comente a linha Application...
'Alarme
Application.Speech.Speak Text:="You have " & Range("E1").Value & " events"
End If
End Sub
'Procedimento que agenda uma nova execução a cada execução
Public Sub lsSchedule()
Dim lHoras As Integer
Dim lMinutos As Integer
Dim lSegundos As Integer
lHoras = 0
lMinutos = 2
lSegundos = 0
NameOfThisProcedure = "lsSchedule"
NameOfScheduleProc = "lsExecutaAtualizacao"
'Hora atual mais dois minutos
lProximo = Time + TimeSerial(lHoras, lMinutos, lSegundos)
'Realiza o agendamento do procedimento
Application.OnTime EarliestTime:=lProximo, Procedure:=NameOfThisProcedure
'Executa a execução da atualização da planilha
Application.Run NameOfScheduleProc
End Sub
Sub Alarme()
Dim j As Integer
For j = 1 To 3
Beep
start2 = Now() + TimeSerial(0, 0, 1)
Application.Wait start2
Next j
End Sub
Abraço
Marcos Rieper

Pai, marido, professor e consultor em Excel.
Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.
Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.