я не отправлял это изначально, потому что я чувствовал однако он не затрагивает корень проблемы, однако, если вы хотите обходной путь, вы можете использовать функцию ниже, аналогично тому, как вы использовали бы CDate
, позвонив ConDate("12/12/2016")
.
Это путь, я подошел к этой проблеме:
Sub MainTest()
Dim InputString As String, OutputDate As Date
InputString = "01/12/2016"
OutputDate = ConDate(InputString)
Debug.Print OutputDate, TypeName(OutputDate)
End Sub
Function ConDate(ByRef InputString As String) As Date
Dim Day As Long, Month As Long, year As Long
'mmddyyyy format
Month = CLng(Left(InputString, InStr(1, InputString, "/", vbTextCompare) - 1))
Day = CLng(Mid(InputString, InStr(1, InputString, "/", vbTextCompare) + 1, InStrRev(InputString, "/", , vbTextCompare) - InStr(1, InputString, "/", vbTextCompare) - 1))
year = CLng(Right(InputString, 4))
ConDate = DateSerial(year, Month, Day)
End Function
Не желая plagerise ответ sebifeixler, я держал свой оригинальный левый/СЧ/право отделиться день/месяц/год, но я чувствую, что это много чтобы использовать его функцию разделения для разделения даты на «/». Комбинация этих двух будет хорошим решением.
Каковы настройки вашего региона Mac/языка? – Dai
Кроме того, в какой строке вы принимаете ошибку и что такое сообщение об ошибке? – Dai
Он находится в настройках США –