Страницы: 1
RSS
Заполнение времени в ячейке не по текущему времени, а с нулевого уровня (00:00:00)
 
Здравствуйте, форумчане.
Возник вопрос по макросу, связанным с временем.

Макрос раз в пять секунд - обновляет время в ячейке A1.
Код
Option Explicit

Dim IsTimerRun As Long

#If VBA7 Then
Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long

#Else
Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
#End If


Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
  On Error Resume Next
  Range("A1") = Time
End Sub

Sub StartCounter()
    If IsTimerRun > 0 Then
    
     Else
      SetTimer Application.hwnd, 0, 1000, AddressOf TimerProc
      IsTimerRun = 1
    End If
End Sub

Sub StopCounter()
    If IsTimerRun > 0 Then
      KillTimer Application.hwnd, 0
      IsTimerRun = 0
    End If
End Sub

Вопрос такой : как вводить по этому таймеру - время с нулевого уровня, то есть с 00:00:00  ?
Каждые 5 секунд - макрос добавляет 5 секунд - в ячейку А1, а когда время будет 23:59:59 - макрос бы добавил 1 - в ячейку B1 и начал бы заполнение А1 опять с нулевого значения.
 
Добавьте перед строкой 17:

Код
  If Time < Range("A1") Then Range("B1") = Range("B1") + 1

Добавьте перед строкой 26:
Код
Range("A1") = Empty
Владимир
 
sokol92, внес изменения в макрос, как вы сказали.
Не работает.

По-прежнему выдает текущее время.
 
Он и должен выдавать текущее время вплоть до полуночи, затем добавит 1 к ячейке B1 и вновь будет выдавать текущее время. Или я неправильно понял исходную задачу?
Владимир
 
Все в норме.
Страницы: 1
Наверх