Функция Excels DateValue зависит от региона. Если вы проанализируете строку типа «04-11-2008» в Европе, она будет проанализирована 4 ноября, а в США - 11 апреля.
Чтобы обойти это, вы можете использовать функцию DateSerial и выполнить анализ самостоятельно. Это также может быть легко адаптировано к вашему собственному нестандартному формату даты.
' Region independent date parsing
' Expects a datetimestr in the format "04-11-2008 21:39:39"
' The function VBA.DateTime.DateValue() mixes up the date and month in different regions
Function parseDateTime(dateTimeStr As String) As Date
Dim parts As Variant
parts = VBA.Strings.Split(dateTimeStr, " ")
Dim datePart As String, timePart As String
datePart = parts(0)
timePart = parts(1)
Dim dateParts As Variant, day As Integer, month As Integer, year As Integer
dateParts = VBA.Strings.Split(datePart, "-")
day = dateParts(0)
month = dateParts(1)
year = dateParts(2)
Dim parsed_date As Date, parsed_time As Date
parsed_date = VBA.DateTime.DateSerial(year, month, day)
parsed_time = VBA.DateTime.TimeValue(timePart)
parseDateTime = parsed_date + parsed_time
End Function