VBA Дата как целое число - PullRequest
       17

VBA Дата как целое число

18 голосов
/ 30 ноября 2011

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

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

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

Ответы [ 4 ]

28 голосов
/ 30 ноября 2011

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

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

CDbl(Now())      ' 40877.8052662037 

.целочисленная часть, используйте

Int(CDbl(Now())) ' 40877

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

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

10 голосов
/ 30 ноября 2011

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

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

1 голос
/ 04 июня 2017

Вы можете использовать приведенный ниже пример кода для строки даты, такой как 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

Примечание: используется CDate для преобразования строки даты в действительную дату

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

1 голос
/ 30 ноября 2011
Public SUB test()
    Dim mdate As Date
    mdate = now()
    MsgBox (Round(CDbl(mdate), 0))
End SUB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...