2015-05-01 3 views
2

Мне удалось получить код ниже, чтобы успешно преобразовать общие значения «19082015» и «9052015» в формат даты dd/mm/yyyy.Пытаться преобразовать определенные форматы в формат даты

Но когда я пытаюсь превращающим общая стоимость «19.08.2015» в том же коде, он не работает макрос и показывает:

Время работы ошибки «13»: Типа MIS-матч

На линии «l = Диапазон (« A1 »). Значение«

Что нужно сделать, чтобы он обработал формат «19.08.2015»?

Sub convertdate() 

Dim l As Long 
Dim testdate As String 
Dim convertdate As Date 

l = Range("A1").Value 

testdate = CStr(l) 

dotdate = False 
If InStr(testdate, ".") Then dotdate = True 
If dotdate = False Then convertdate = DateValue(CInt(Left(testdate, Len(testdate) - 6)) & "/" & CInt(Mid(testdate, Len(testdate) - 5, 2)) & "/" & CInt(Right(testdate, 4))) 
If dotdate = True Then convertdate = DateValue(CInt(Left(testdate, Len(testdate) - 8)) & "/" & CInt(Mid(testdate, Len(testdate) - 6, 2)) & "/" & CInt(Right(testdate, 4))) 

Range("A2").Value = convertdate 

End Sub 

ответ

2

Проблема будет, если Range("A1") не является числом. Поэтому, если в нем есть ., тогда вы не можете положить это значение в длинный. объявить l, как string не long и ваш код будет работать

+0

Не совсем уверен, как я пропустил это! Спасибо, отлично работает. – redd

0
[a2] = CDate(Join(Split([a1], "."), "-")) 
Смежные вопросы