Прежде всего, вот снимок ошибки вы получаете, когда вы попытаетесь запустить OnTime из листа (не модуль), как я буду объяснить. Я тоже получал эту ошибку и пытался понять, почему.
Это похоже на ошибку безопасности, но в данном случае это не совсем обычная ошибка безопасности.
Чтобы запустить код по таймеру, вы должны добавить его в модуль VBA. Перейдите в редактор VisualBasic и щелкните правой кнопкой мыши VBAProject (книга). В Excel это выглядит так:
После добавления модуля вы добавляете там свой код таймера.
Поскольку вы хотите позвонить RefreshAction каждые 5 секунд, вы могли бы сделать что-то вроде следующего:
Sub StartProcess()
Debug.Print Now()
Application.OnTime Now() + TimeValue("00:00:05"), "RefreshAction", Schedule = True
End Sub
Sub RefreshAction()
Application.EnableEvents = True
Debug.Print Now() + TimeValue("00:00:05")
Application.OnTime Now() + TimeValue("00:00:05"), "RefreshAction", Schedule = True
End Sub
Я дам вам добавить код, который вы хотите, чтобы это сделать, каждый раз, когда в подпрограмме RefreshAction.
Вот как он будет выглядеть в модуле. Убедитесь, что ваш показывает, что он находится в модуле, как на картинке:
Кроме того, я нашел его довольно шелушащимся. Если в вызове OnTime у вас есть что-то даже немного неправильное, он будет терпеть неудачу. Скопируйте мой код (я его протестировал) и попробую сначала. После этого просто добавьте свой код в подраздел RefreshAction.
StartProcess()
Запустите StartProcess, чтобы начать дело идет.
Кроме Странный
После того как я добавил, что модуль, я все еще был мой код в рабочем листе, и я вернулся и попытался запустить его, чтобы увидеть ошибку снова и странное дело в том, что когда-коде находится в модуле, вы больше не получите ошибку из рабочего листа. Вероятно, это ссылка на код в модуле.
Просто убедитесь, что «Действие» - это суб, без параметров, определенных в модуле кода ** ThisWorkbook **, а не в каком-либо другом модуле кода? –
Вы пробовали просто «Действовать»? – findwindow
Я избавился от ThisWorkbook, но у меня все еще такая же проблема – fdt6243