2015-10-22 5 views
0

Я havew живой корм данных в Excel, теперь нужно записывать данные, как показано здесь:Ошибка с application.ontime методом в Excel VBA

enter image description here]

я написал на код следующим

Option Explicit 

Dim SchedRecalc As Date 
Sub Recalc() 
    Range("A1").Value = Format(Now, "dd-mmm-yy") 
    Range("B1").Value = Format(Time, "hh:mm:ss AM/PM") 

    Call SetTime 
End Sub 

Sub SetTime() 
    SchedRecalc = Now + TimeValue("00:00:01") 
    Application.OnTime SchedRecalc, "Recalc" 
    Application.OnTime SchedRecalc, "Record" 

End Sub 

Sub Record() 
' 
' update Macro 
' 


    With Worksheets("Sheet1") 

     Application.ScreenUpdating = False 
     Sheet1.Range("A1:A169").Copy _ 
     Destination:=mySheet.Range("E9") 
     Sheet1.Range("E9:E169").Insert Shift:=xlShiftToRight 

     Selection.Insert Shift:=xlToRight 
     Application.CutCopyMode = False 

    End With 

End Sub 


Sub Disable() 
    On Error Resume Next 
    Application.OnTime EarliestTime:=SchedRecalc, Procedure:="Recalc",     
    Schedule:=False 
    Application.OnTime EarliestTime:=SchedRecalc, Procedure:="Record",  
    Schedule:=False 

End Sub 

но следующая ошибка приходит .. я отключил все настройки безопасности:

enter image description here]

+0

Где находится макрос «Рекорд»? Он должен быть в нормальном модуле, и этот модуль также не должен называться 'Record'. – Rory

+0

Да, это было не в нормальном режиме .. он работает –

+0

Существует одна ошибка или я не знаю ... как ограничить этот код только одним листом ... при запуске кода i переключает листы, код запускается в текущем листе открыт. –

ответ

1

Я успешно выполнил ваш код. Убедитесь, что процедура, с которой вы ссылаетесь с помощью Application.OnTime, помещается в модуль .

Вы также можете дважды проверить свою последнюю строку. Копирование и вставка кода не помогли редактору VBA.

Sub Disable() 
    On Error Resume Next 
    Application.OnTime EarliestTime:=SchedRecalc, Procedure:="Recalc",     
    Schedule:=False 
    Application.OnTime EarliestTime:=SchedRecalc, Procedure:="Record",  
    Schedule:=False 
End Sub 

Должно быть на одной линии.

Sub Disable() 
    On Error Resume Next 
    Application.OnTime EarliestTime:=SchedRecalc, Procedure:="Recalc", Schedule:=False 
    Application.OnTime EarliestTime:=SchedRecalc, Procedure:="Record", Schedule:=False 
End Sub 
+0

спасибо Аарон и Рори, это сработало –

+0

Привет всем, я запускаю рабочую книгу, как работает в течение двух дней. Лист, похоже, работает медленно. Есть ли какие-либо изменения, которые могут вычислять более быстрые листы. –

+0

У вас много движений, происходящих в камерах. Если вы можете жить, не видя, что происходит во время работы программы, вы можете попробовать добавить «Application.ScreenUpdating = False» в начале, а также «Applcation.ScreenUpdating = True» в конце. В противном случае вы можете переоценить процедуру копирования/вставки и сделать что-то еще. –

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