ThisWorkbook не имеет значения глобальной переменной для отмены ontime ()

Я использую ссылку ниже:

http://www.ozgrid.com/Excel/run-macro-on-time.htm

чтобы сохранить время, в которое я вызываю функцию через ontime а затем отменил ее. Однако после того, как я храню последний раз, я вызываю ontime() тогда моя функция закрывается. Проблема в том, что время, которое я только что сохранил, выходит из сферы действия и chanegs в пустые. Поэтому, используя ссылку выше, я говорю, что после RunOnTime() значение dTime пуст, и поэтому, когда я вызываю CancelOnTime() это не работает. Я объявил dTime так же, как в примере. Все одно и то же, кроме меня в этой книге.

Может ли кто-нибудь посоветовать?

В этом примере переменная dTime объявляется как Public . Фактически, это не обязательно, потому что доступ к нему осуществляется только RunOnTime() , но полезно иметь доступ к нему с помощью функции, которую вы написали. CancelOnTime() не зависит от переменной.

Я думаю, вы можете смутить себя Watch. Чтобы просмотреть общедоступный varaiable, вы устанавливаете контекст для All Procedures – All Modules.

Вы не можете запустить этот код в модуле ThisWorkbook, как опубликовано. ThisWorkbook – это модуль класса, и в нем процедуры по умолчанию недоступны вне класса. Во-первых, вам нужно сделать любую процедуру, называемую OnTime public, чтобы она была доступна извне класса (OnTime живет вне класса). Далее, любые ссылки на процедуру должны предшествовать имени класса. С этими двумя изменениями ваш код будет выглядеть так:

 Public dTime As Date Dim lNum As Long Public Sub RunOnTime() dTime = Now + TimeSerial(0, 0, 10) Application.OnTime dTime, "ThisWorkbook.RunOnTime" lNum = lNum + 1 If lNum = 3 Then CancelOnTime Else MsgBox lNum End If End Sub Sub CancelOnTime() Application.OnTime dTime, "ThisWorkbook.RunOnTime", , False End Sub 
Interesting Posts

Excel – КОСВЕННЫЙ с подсчетом

Как рассчитать часы, когда есть дробные компоненты

Сравните две строки в vba excel

Как отключить excel не удается очистить буфер обмена (не убивая программу удаленного рабочего стола)

Excel RoundUp с оператором IF не работает.

Excel VBA – создание строк для каждого обновленного значения в ячейке ссылки DDE

Как связать изображение с заголовком

Excel – как добавить значения с конкретными критериями числа

Разница между параметрами «Range», «Range.Cells», «Range.Rows» и т. Д. «Подтипы»,

Excel VBA – пол на колонках колонны

Попытка сохранить модель Excel Solver линейной

Можете ли вы отображать текущее время в Excel, включая миллисекунды, как целое без знаков препинания?

Как отличить подачу линии и возврат каретки в методе ReadAllLines?

Как извлечь полный путь из гиперссылки excel

Сохранение объектов пользовательского класса с использованием AppDomain в VBA

Давайте будем гением компьютера.