Как я могу получить сегодняшнюю дату в ячейке в формате дд / мм / гггг? - PullRequest
0 голосов
/ 04 ноября 2018

Я хочу поместить сегодняшнюю дату (4 ноября 2018 года) в ячейку в этом (dd/mm/yyyy) формате:

    04/11/2018

Однако каждая попытка до сих пор приводит к (mm/dd/yyyy формат):

    11/04/2018

Оригинальный код:

    Dim sToday As String
    sToday = Date
    Cells(nCurrentRow, nCurrentColumn) = sToday

То, что я пробовал, включает в себя:

    Cells(nCurrentRow, nCurrentColumn).Value = sToday

и

    Cells(nCurrentRow, nCurrentColumn).Select
    Selection.NumberFormat = "dd/mm/yyyy;@"

и

    sToday = Format(Date, "dd-mm-yyyy")

При выводе строки в окне сообщения она всегда отображается в нужном формате: 04/11/2018

Даже когда я публикую дату в виде простой строки в правильном формате 04/11/2018 формат все равно меняется!

Региональные настройки Windows 10 соответствуют моим требованиям (формат даты в Великобритании).

Формат ячейки также установлен на dd/mm/yyyy.

Ответы [ 3 ]

0 голосов
/ 04 ноября 2018

Я думаю, что ваш алгоритм нарушается предпочтениями даты VBA в США. Независимо от региональных настроек Windows, все, что вам нужно сделать, это вставить переменную в виде даты (а не строки).

Когда VBA преобразует сегодняшнюю дату в строку, она имеет формат США. Следовательно, числовой формат в ячейке назначения не будет иметь никакого влияния на строку, равно как и функция формата VBA. Оба они действуют на числа / даты, но не на строки, как вы их используете.

Например, попробуйте:

With Cells(1, 1)
    .NumberFormat = "dd/mm/yyyy"
    .Value = Date
End With

или, используя ваши переменные назначения:

   Dim dToday As Date
dToday = Date

With Cells(nCurrentRow, nCurrentColumn)
    .Value = dToday
    .NumberFormat = "dd/mm/yyyy"
End With
0 голосов
/ 04 ноября 2018

Как получить текущую дату в ячейке в формате дд / мм / гггг?

Поскольку ваша конфигурация имеет формат UK:

Ctrl + ;

0 голосов
/ 04 ноября 2018
Sub test()
Dim sToday As String
sToday = Date
sToday = Format(sToday, "dd mm yyyy")

MsgBox sToday
Cells(1, 1).Value = sToday
End Sub

Я попробовал это, и я получил желаемый результат. Обходной путь - сохранить дату в строку и отформатировать строку.

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