Format (SomeDate, "MM / dd") = "12-15" в VBA - PullRequest
5 голосов
/ 16 декабря 2011

Я пишу макрос VBA в Excel, который анализирует данные из электронной таблицы и отправляет электронное письмо.В этом макросе я должен прикрепить дату в формате «MM / dd», но вывод в формате «MM-dd».Итак, вопрос в том, почему мой слеш заменяется чертой?

Для простоты я сократил код до этого примера и убедился, что проблема существует и с этим примером ...

Private Sub Test()
    Dim Yesterday As Date: Yesterday = DateAdd("d", -1, Now)
    MsgBox Format(Yesterday, "MM/dd")
End Sub

При запуске в окне сообщения отображается «12-15» вместо «12/15», как и ожидалось.

Ответы [ 2 ]

12 голосов
/ 16 декабря 2011

Я сам не использовал VBA, но я подозреваю , он рассматривает / как "разделитель даты текущей культуры" - и вы, вероятно, выполняете в культуре, которая использует - в качестверазделитель даты.Вы можете попробовать процитировать экранирование от косой черты, если вы определенно всегда хотите косую черту:

MsgBox Format(Yesterday, "MM\/dd")

Это немного догадка как для причины, так и для устранения,но это, по крайней мере, стоит попробовать.

РЕДАКТИРОВАТЬ: Спасибо GSerg за исправление того, как выполнить правый выход в этом контексте.

2 голосов
/ 16 декабря 2011

Это связано с настройками вашей культуры в Windows. Перейдите в Панель управления - Региональные и языковые параметры - Настройка региональных параметров - Разделитель даты. Он установлен на «-». Если вы предпочитаете "/", вы можете изменить его там.

Если вы хотите отформатировать дату независимо от региональных настроек по умолчанию, вы можете сделать то, что сказал Джон Скит (экранировать символ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...