У меня есть простой код, который копирует текущую стоимость моего портфеля акций и вставляет ее в таблицу. Недавно я попытался добавить таймер, чтобы он делал это автоматически каждый час. Однако это работает, оно вставляет значение четыре или пять раз в таблицу. Я искал вокруг, и я думаю, что это может быть потому, что для запуска макроса требуется всего доля секунды, и поэтому он зацикливается, пока не пройдет целая секунда.
Вот код:
Sub AutoPL()
Worksheets("Overview").Range("C15:D15").Copy
Worksheets("Data").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Call PLTimer
End Sub
Sub PLTimer()
Application.OnTime Now + TimeValue("01:00:00"), "AutoPL"
End Sub
time
с этим, и если другой час, который, я полагаю, это все, что вам действительно нужно, тогда запустите, если тот же час, то не делайте этого. Или установите ` Now + TimeValue (01:00:00) ` в переменную, а затем отмените время включения после запуска на это время, а затем сбросьте в PLTimer. - person Nathan_Sav   schedule 13.09.2017Dim TimeLastRun as Double
, так как это будет очень точно по сравнению с хранением трехInteger
и их сравнением. - person Brandon Barney   schedule 13.09.2017Application.Wait(TimeValue("00:01:00"))
перед вызовомPLTimer
. Это добавит явное ожидание продолжительностью в минуту. - person Brandon Barney   schedule 13.09.2017Application.Wait(TimeValue("00:00:01"))
- person Kresimir L.   schedule 13.09.2017