#vba #excel #date #type-mismatch
#vba #excel #Дата #несоответствие типов
Вопрос:
В Excel 2010 все работает нормально, но в Excel 2013 возникает ошибка «Несоответствие типов». Проблема связана со следующими кодовыми линиями (разные варианты, которые я пробовал).
startDate = startDateCell.Value
startDate = CDate(startDateCell.Value)
startDate = CDate(Format(startDateCell.Value, "short date"))
Содержимое startDateCell — это, например, строка типа «12.06.2016»
StartDate — это переменная даты
Комментарии:
1. Вы пробовали
DATEVALUE()
?2. Похоже, что ваши региональные настройки на компьютере с 2013 не распознают даты с разделителем «точка».
3. Для региональных настроек на компьютере установлено значение EU, а дата указана в формате EU.
4. DATEVALUE() тоже не помогает
Ответ №1:
Это дата в формате США? Я предполагаю, что это не зависит от времени публикации. Проблема может заключаться в том, что vba распознает его как дату в США и интерпретирует 13/1/2016 как 1/13/2016 (используя британскую логику), ссылаясь на 13-й месяц, что выдает ошибку.
Function Convertings() As String
Convertings = Format(DateValue("13/1/2016"), "mm/dd/yyyy")
End Function
Комментарии:
1. Это моя точка зрения, я думаю, что она должна быть в формате US, поэтому в настоящее время она находится на листе как ddmmyyyyy, vba просматривает ее и интерпретирует как mmddyyyy, поскольку она американская. Вы могли бы проверить это с помощью datepart, если вы можете заставить какие-либо значения работать вообще?