Несоответствие типов расчета времени - PullRequest
2 голосов
/ 31 января 2020

Я пытаюсь вычислить разницу секунд между двумя датами с двумя десятичными знаками . Тем не менее я получаю ошибку 13, несоответствие типов при выполнении кода. Я искал в Интернете и пробовал много вариантов, но я всегда получаю несоответствие типов. Я не уверен, как решить эту проблему. Может ли кто-нибудь научить меня, как?

INFO : первоначально использовал код из этот вопрос

Вот текущий код:

Sub Query()
    Dim Beginning As Date: Beginning = Now: Dim Duration As Double
    ... more code ...
    Duration = Round((Now- Beginning) * 60 * 60 * 24, 2)
End Sub

Это работает, спасибо, BigBen! Кроме того, спасибо Сиддарту Рауту.

Кстати, я переключился на таймер, как вы упомянули, BigBen, и он стал намного лучше. :)

Sub Query()
    Dim Beginning As Single: Dim Ending As Single
    Beginning = Timer()
    ... more code ...
    Ending = Timer()
    Duration = Format(WorksheetFunction.Round(Ending - Beginning, 2), "#0.00")
End Sub

Отличный сервис, еще раз спасибо!

С уважением, Джозеф

1 Ответ

4 голосов
/ 31 января 2020
  1. Format возвращает Variant/String, и вы не можете присвоить его Double. Связанный ответ неверен.

  2. В настоящее время функция принимает результат DateDiff за секунд и преобразует его обратно в дни по деления. Вам понадобится другой подход, если вы хотите доли секунды; DateDiff может вернуть только разницу в целых секунд.

Просто возьмите разницу между двумя датами и умножьте на 60 * 60 * 24. Затем вы можете округлить при необходимости:

Public Function DifferenceInSeconds(ByVal EarlierDate As Date, ByVal LaterDate As Date) As Double
    DifferenceInSeconds = (LaterDate - EarlierDate) * 60 * 60 * 24
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...