Свойство NumberFormat не действует в функции, которая должна возвращать отформатированную дату - PullRequest
0 голосов
/ 20 мая 2019

Проблема Excel VBA:

У другого человека возникла проблема с функцией NOW (), поскольку он хотел, чтобы она возвращала статическую дату и время без необходимости копировать и вставлять значение обратно.Я предложил пользовательскую функцию, которая корректно возвращает текущую дату и время в статической форме.Проблема заключается в том, что свойство NumberFormat игнорируется, и в результате появляется число.

Я пробовал несколько других решений для форматирования, но они также игнорируются или приводят к ошибкам.

Public Function DateNow() As Date

    ActiveCell.NumberFormat = "[$-en-US]m/d/yy h:mm AM/PM;@"
    DateNow = Now

End Function

Ожидаемым результатом будет статическая текущая дата и время.Повторить;код верен, за исключением части, которая говорит ActiveCell.NumberFormat ..., которая не вступает в силу.

Редактировать: я прочитал комментарии ниже и попытался обновить его, чтобы включить вызов подпрограммы, новсе еще не повезло.Может ли кто-нибудь направить меня к обходному пути?Спасибо.

Public Function DateNow() As Date
    DateNow = Now
    Call DateSub(ActiveCell)
End Function
Public Sub DateSub(rg As Range)

    rg.NumberFormat = "[$-en-US]m/d/yy h:mm AM/PM;@"

End Sub

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Пожалуйста, попробуйте следующее, так как форматирование важно, поэтому давайте отформатируем значение внутри самой функции.Надежда!это служит цели.Если это поможет, отметьте принятый ответ.

Public Function DateNow() As String

    DateNow = Format(Now, "[$-en-US]m/d/yy h:mm AM/PM;@")

End Function
0 голосов
/ 20 мая 2019
 Sub test()
      ActiveCell = DateNow
      ActiveCell.NumberFormat = "[$-en-US]m/d/yy h:mm AM/PM;@"
 End Sub


 Public Function DateNow() As Date

     DateNow = Now

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