2012-10-08 5 views
1

Я разрабатываю книгу, подобную панели инструментов, в Excel, и я создал процедуру, позволяющую время от времени показывать некоторые диаграммы автоматически с помощью методаиз Excel VBA, но у меня возникают проблемы с отладкой моих подпрограмм.Есть ли способ увидеть запланированные процедуры Application.OnTime в Excel?

Есть три запланированные процедуры: первый принимает снимок данных для графиков, второй начинает выставку графиков, а третий, начиная со второго, прокручивает диаграммы, показывая их для краткой период времени

Моя главная проблема в том, чтобы следить за последнего выполнения подпрограмм, потому что каждый из них планировать себя Application.OnTime

Так у меня есть два вопроса:

One: есть способ просмотра запланированных процедур от Application.OnTime в Excel?

2: Есть ли лучший способ запланировать повторяющиеся подпрограммы с помощью VBA?

ответ

1

Не знаю, что я знаю, чтобы получить запланированное. Когда я отлаживал программу, использующую OnTime, я сделал свой собственный журнал, чтобы я мог видеть, что было запланировано и когда.

Public Function WriteLog(bSchedule As Boolean) As Boolean 

    Dim sFile As String, lFile As Long 
    Dim sOutput As String 
    Dim bReturn As Boolean 

    Const sSOURCE As String = "WriteLog()" 

    On Error GoTo ErrorHandler 
    bReturn = True 

    sFile = Environ("USERPROFILE") & gsLOGPATH & gsTIMERLOG 
    lFile = FreeFile 

    sOutput = bSchedule 
    sOutput = sOutput & "," & gdtNextRun 
    sOutput = sOutput & "," & gsSCHEDMACRO 
    sOutput = sOutput & "," & Format(Now, "mm/dd/yyyy hh:mm:ss") 

    Open sFile For Append As lFile 

    Print #lFile, sOutput 

    Close lFile 

ErrorExit: 
    On Error Resume Next 
    WriteLog = bReturn 
    Exit Function 

ErrorHandler: 
    bReturn = False 
    If bCentralErrorHandler(msMODULE, sSOURCE) Then 
     Stop 
     Resume 
    Else 
     Resume ErrorExit 
    End If 

End Function 

Это использует ошибку системы обработки, так что вы будете иметь, чтобы исправить это за твой или удалить обработку ошибок материала.

  • gdtNextRun является глобальной переменной даты для следующего запланированного запуска
  • gsSCHEDMACRO глобальная строковая константа, для которой макрос будет работать
  • журналы bSchedule ли я планировать или не-планирования.

Если у вас есть несколько OnTimes going, вам понадобится массив или коллекция для отслеживания. Шахта была всего лишь одним макросом, который планировалось запустить или нет, поэтому моя глобальная переменная/константа сделала трюк.

+0

Я пробовал ваше решение (с некоторыми изменениями) и работал очень хорошо. Благодаря! –

Смежные вопросы