Если вы хотите использовать VBA для возврата Date
значения типа данных строки 01/02/2018 12:25:00 PM
, представляющего 01 February 2018
в ваших локальных региональных настройках даты (в окне сообщения), вы можете использовать:
Dim dt as String
dt = "01/02/2018 12:25:00 PM"
MsgBox DateSerial(Mid(dt, 7, 4), Mid(dt, 4, 2), Left(dt, 2))
† Вот как это отображается для me . См. Примечание ниже.
Если вы действительно хотите, чтобы строка (в окне сообщений) возвращалась в указанном вами формате, "dd MMMM yyyy"
, вы можете использовать:
Dim dt as String
dt = "01/02/2018 12:25:00 PM"
MsgBox Format(DateSerial(Mid(dt, 7, 4), Mid(dt, 4, 2), Left(dt, 2)), "dd MMMM yyyy")

Если вы хотите сохранить эти данные (включая время) или использовать их для вычислений, то правильный способ сделать это будет более как:
Dim strMyDate as String, dtMyDate as Date
strMyDate = "01/02/2018 12:25:00 PM"
dtMyDate = DateSerial(Mid(strMyDate, 7, 4), Mid(strMyDate, 4, 2), _
Left(strMyDate, 2)) + TimeValue(Mid(strMyDate, 11))
MsgBox dtMyDate

† Обратите внимание, что эти MsgBox отображают дату / время на основе настроек Windows моей системы (показанных ниже), показанных здесь, где их можно настроить если необходимо. (Следовательно, приведенные выше результаты будут выглядеть для вас иначе.)
Откройте эти настройки, нажав
, наберите region
и нажмите ᴇɴᴛᴇʀ .
(Нажмите, чтобы увеличить)
DateTime на самом деле хранится в Excel как число, где 0
= December 30, 1899
и +1 = +1 day
, поэтому пример даты 01 February 2018 12:25:00 PM
на самом деле является только форматированным представлением серийного номера DateTime, в в этом случае 43132.5173611
.
Дополнительная информация: