Время отсчитывать за полночь

Теперь есть гораздо более простой способ установить более раннюю версию формулы, которую вы ранее устанавливали. Просто используйте

brew switch [formula] [version]

Например, я чередуюсь регулярно между Node.js 0.4.12 и 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Поскольку brew switch просто меняет символические ссылки, это очень быстро. См. Дополнительную документацию на домашней Wiki в Внешние команды .

0
задан MMO 16 January 2019 в 10:09
поделиться

1 ответ

Сообщения об ошибках устраняют множество проблем.

  • Ошибка overflow, как уже указывалось, связана с целочисленными ограничениями на аргументы функции TimeSerial.
  • Ошибка 1004, возникающая в полночь, связана с тем, что, когда Timer возвращается к 0 в полночь, ваше выражение для секунд является отрицательным числом. Если вы не используете систему дат 1904 года, вы не можете выражать отрицательные времена в Excel.
  • Пытаясь приспособиться к «переходу в полночь», вы объединяете секунды и дни, а также Excel и VBA. Вы в своем макросе пытаетесь добавить одну секунду, тогда как вы, вероятно, действительно хотите добавить один день. Кроме того, поскольку True в VBA равно -1, вы фактически вычитаете, а не добавляете в любом случае!

Я думаю, что следующие модификации могут работать, но не тестировали их всесторонне. 86400 - количество секунд в дне.

Option Explicit
Sub RunMe()

Dim StartS As Single
Dim CellS As Range
Dim Cellt As Range
Dim CountUPS As Date
Dim CountUp As Date

'Timer is the number of seconds since midnight.
'Store timer at this point in a variable
StartS = TIMER

'Store A1 in a variable to make it easier to refer
'to it later. Also, if the cell changes, you only
'have to change it in one place
Set CellS = Sheet1.Range("A1")

'This is the starting value.
CountUPS = TimeSerial(0, 0, 0)

'Set our cell to the starting value
CellS.Value = CountUPS

Set Cellt = Sheet1.Range("A2")
CountUp = Sheet1.Range("A2")

'b_pause = True

Do While CellS.Value >= 0

    CellS.Value = CountUPS + (TIMER - StartS - 86400 * (StartS > TIMER)) / 86400
    Cellt.Value = CountUp + (TIMER - StartS - 86400 * (StartS > TIMER)) / 86400
    DoEvents
Loop

End Sub
0
ответ дан Ron Rosenfeld 16 January 2019 в 10:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: