I am using the below link:
http://www.ozgrid.com/Excel/run-macro-on-time.htm
to store the time at which I call a function via ontime
and then cancel it. However, after I store the last time, I call ontime()
then my function closes. The problem is the time I have just stored goes out of scope and chanegs to empty. So using the link above, I am saying that once RunOnTime()
has finished, the value of dTime is empty and therefore when I call CancelOnTime()
it does not work. I declared dTime just as in the example. Everything is the same except I am in ThisWorkbook.
Can anyone advise?
In the example, the variable dTime is declared as Public. In fact, it doesn't need to be because only
RunOnTime()
accesses it, but it's useful to be able to access it with a function you wrote.CancelOnTime()
doesn't depend on the variable.I think you may be confusing yourself with Watch. To watch a public varaiable, you set the context to All Procedures - All Modules.
You can't run that code in the ThisWorkbook module as posted. ThisWorkbook is a class module and procedures in it aren't available outside of the class by default. First, you need to make any procedure called by OnTime public so it's accessible from outside the class (OnTime lives outside the class). Next, any references to the procedure need to be preceded by the class name. With this two changes, your code will look like this: