Дата VBA как целое
Есть ли способ получить базовое целое число для функции Date
в VBA? Я имею в виду целое число, хранящееся в Excel, для описания дат в памяти с точки зрения количества дней (когда время включено, это может быть float, то я думаю). Однако я интересуюсь только целой частью. Есть ли еще одна функция для этого?
Например, на сегодняшний день() я хотел бы иметь возможность вернуться назад 40877..
Спасибо, ребята;)
Ответы
Ответ 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:)