2010-06-24 2 views

ответ

21

Существует Date function.

+2

так как я могу это использовать ?? я могу использовать = Now() в VBA, чтобы получить текущую дату и время, но это не позволит мне вводить Date() или = Date(). он автоматически убирает(), и функция не работает так же, как = Now() – Justin

+0

Дата - правильная функция для использования. И да, в редакторе кода он удалит() –

+1

ах, я вижу ... я стою исправлен. ошибка, когда меня отбрасывали. извинения ... и спасибо! – Justin

1

Вы также можете использовать формат $ (Now(), "Short Date") или любой другой формат даты, который вы хотите. Помните, что эта функция вернет Date как строку, поэтому использование метода Date() - лучший подход.

+0

Что мне нужно сделать с приведенным выше, чтобы получить формат даты 28 сентября-10? Спасибо, я ценю это! – Justin

+0

Формат $ (Date(), "dd-MMM-yy"). Существует также функция Format, которая возвращает вариант. Если вы знаете, что вам понадобится строка, которую нужно вернуть, используйте функцию Format $. –

+0

В коде вы обычно можете использовать # для округления даты. Например: # 09/28/2010 # Однако вышеизложенное может быть испорчено форматированием по дате, поэтому другим вариантом является команда dateerial(). Синтаксис - это даты (год, месяц, день), поэтому DateSerial (2010,9,28) –

10

Даты в VBA - это числа с плавающей запятой, где целочисленная часть представляет собой дату, а часть доли представляет время. Таким образом, помимо использования функции Date, как говорит tlayton (для получения текущей даты), вы также можете указать значение даты в целое число, чтобы получить дату-часть с произвольной даты: Int(myDateValue).

+0

круто! Спасибо за помощь! – Justin

+0

Зачем кому-то это делать, когда есть определенная функция для возврата целой части в одиночку? То есть, зачем делать два вызова функций, когда кто-то будет выполнять эту работу? –

+3

Я интерпретирую предложение Дина как способ понять природу значений Date/Time, а не как общую замену 'Date()'. С этой точки зрения я думаю, что его предложение очень полезно. +1 – HansUp

7
DateValue(CStr(Now())) 

Это лучшее, что я нашел. Если у вас есть дата в виде строки уже вы можете просто сделать:

DateValue("12/04/2012 04:56:15") 

или

DateValue(*DateStringHere*) 

Надеется, что это поможет кому-то ...

3

Я бы предпочел, чтобы сделать функцию, которая Безразлично» t со строками:

'--------------------------------------------------------------------------------------- 
' Procedure : RemoveTimeFromDate 
' Author : berend.nieuwhof 
' Date  : 15-8-2013 
' Purpose : removes the time part of a String and returns the date as a date 
'--------------------------------------------------------------------------------------- 
' 
Public Function RemoveTimeFromDate(DateTime As Date) As Date 


    Dim dblNumber As Double 

    RemoveTimeFromDate = CDate(Floor(CDbl(DateTime))) 

End Function 

Private Function Floor(ByVal x As Double, Optional ByVal Factor As Double = 1) As Double 
    Floor = Int(x/Factor) * Factor 
End Function 
0

Вставьте эту функцию в свой модуль и используйте ее как формулу

Public Function format_date(t As String) 
    format_date = Format(t, "YYYY-MM-DD") 
End Function 

, например, в ячейке A1 применить эту формулу

=format_date(now()) 

он вернется в формате YYYY-MM-DD. Измените любой формат (год месяца), как пожелаете.