Несоответствие типов в Excel 2013

#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, если вы можете заставить какие-либо значения работать вообще?