Подтвердить что ты не робот

Дата VBA как целое

Есть ли способ получить базовое целое число для функции Date в VBA? Я имею в виду целое число, хранящееся в Excel, для описания дат в памяти с точки зрения количества дней (когда время включено, это может быть float, то я думаю). Однако я интересуюсь только целой частью. Есть ли еще одна функция для этого?

Например, на сегодняшний день() я хотел бы иметь возможность вернуться назад 40877..

Спасибо, ребята;)

4b9b3361

Ответ 1

Дата не является целым числом в VB (A), это Double.

Вы можете получить значение Date, передав его CDbl().

CDbl(Now())      ' 40877.8052662037 

Чтобы получить целочисленную часть, используйте

Int(CDbl(Now())) ' 40877

который возвратит Long Double без десятичных знаков (т.е. что Floor() будет делать на других языках).

Использование CLng() или Round() приведет к округлению, которое вернет "день в будущем" при вызове после 12:00 в полдень, поэтому не делайте этого.

Ответ 2

Просто используйте CLng(Date).

Обратите внимание, что для этого нужно использовать Long not Integer, так как значение текущей даты → 32767

Ответ 3

Public SUB test()
    Dim mdate As Date
    mdate = now()
    MsgBox (Round(CDbl(mdate), 0))
End SUB

Ответ 4

Вы можете использовать приведенный ниже пример кода для строки даты, например, mdate и Now(), как toDay, вы также можете рассчитать отношение между датой, как Aging

Public Sub test(mdate As String)
    Dim toDay As String
    mdate = Round(CDbl(CDate(mdate)), 0)
    toDay = Round(CDbl(Now()), 0)
    Dim Aging as String
    Aging = toDay - mdate
    MsgBox ("So aging is -" & Aging & vbCr & "from the date - " & _
    Format(mdate, "dd-mm-yyyy")) & " to " & Format(toDay, "dd-mm-yyyy"))
End Sub

NB: Используется CDate для конвертирования строки даты в действительную дату

Я использую это в Office 2007:)