2016-02-09 5 views
1

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

«Среда, 10 Сентября 2014 6:53 AM»

Функция VBA IsDate используется, чтобы проверить, является ли выражение Date, или выражение может быть преобразовано в действительный Date или Time. Функция возвращает true или false.

Как я могу получить срок действия?

'----------------------------------------- 

Dim x As Integer 

x = ActiveCell.Row 

'----------------------------------------- 

Dim vDate As Variant 

vDate = "Wednesday, September 10, 2014 6:53 AM" 

MsgBox vDate 

MsgBox IsDate(vDate) 'retuns false 

'----------------------------------------- 

Dim fDAT As String 

fDAT = Left(vDate, Len(vDate) - 7) 

MsgBox fDAT 

MsgBox IsDate(fDAT) 'retuns false 

'----------------------------------------- 

''ActiveSheet.Range("a" & x).Value = fDAT 
+0

Пожалуйста, обратите внимание: это RSS PubDate формат, который я пытаюсь поместить в ячейку Excel , чтобы иметь возможность сортировать по дате. ДЕНЬ-МЕСЯЦ-ВРЕМЯ –

+0

Удалите следующий и следующий запятые. –

+0

Спасибо, попробуй. –

ответ

1

Вы бы изменить:

fDAT = Left(vDate, Len(vDate) - 7) 

To:

fDAT = Mid(vDate, InStr(vDate, ",") + 2) 
+0

Вау, смена налево до середины РАБОТАЕТ !!! он вернул значение истинной даты. –

+0

@ LiterateAspects, пожалуйста, отметьте как правильно. Это то, что вы можете сделать. Нажмите на зеленый галочку по ответу. –

+0

Спасибо, он был разрешен при переключении слева направо с помощью fDAT - как это предусмотрено Скоттом Кранером - спасибо, ничего себе!что отличное сообщество - как мне закрыть этот запрос? THANK YOU SCOTT –

0

Избавиться от "среды" и попробовать что-то вроде:

vDate = Format(vDate, "M/D/YYYY H:MM:SS AM/PM") 
xDate = IsDate(vDate) 
+0

Как я могу избавиться от среды, так как это значение в ячейке. И имена дней недели, и имена месяцев не фиксированы конечным числом символов, так как я могу выбрать их путем обрезки, чтобы удалить? о, и большое спасибо, поскольку я пытался с раннего утра провести время в Сан-Франциско, чтобы решить это. –

+0

как это может работать как формат не «M/D/YYYY H: MM: SS AM/PM» –

+0

Это то, что я надеюсь сделать, чтобы преобразовать rss pubdate в строку, которую я могу сортировать в Excel, о и спасибо! –

0

получить также правильность вы можете использовать примерно так:

Sub blabla() 
    Dim vDate As Variant, xDate As Boolean 
    vDate = "Wednesday, September 10, 2014 6:53 AM" 
    xDate = IsDate(vDate) Or (IsDate(Mid(vDate, InStr(vDate, ",") + 1)) And Left(vDate, InStr(vDate, ",") - 1) = Format(Mid(vDate, InStr(vDate, ",") + 1), "dddd")) 
End Sub 

это также будет ложным, если оно не является правильным будним день;)

Чтобы получить годное к употреблению значения, которое вы могли бы использовать что-то вроде:

If Not IsDate(vDate) And IsDate(Mid(vDate, InStr(vDate, ",") + 1)) Then vDate = Mid(vDate, InStr(vDate, ",") + 1) 
+0

Спасибо, это было разрешено с переключением слева направо с fDAT - как это предусмотрено Скоттом Кранером - спасибо, ничего себе! что отличное сообщество - как мне закрыть этот запрос? –

+0

Цитата: * Нажмите на зеленую галочку по ответу. * (Из ответа, который вы хотите принять);) –

Смежные вопросы