首页 > 解决方案 > NumberFormat 属性在需要返回格式化日期的函数中未生效

问题描述

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

标签: excelvbafunctiondate

解决方案


请尝试以下操作,因为格式化它很重要,所以让格式化值在它自己的函数中。希望!它达到了目的。如果有帮助,请将其标记为已接受的答案。

Public Function DateNow() As String

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

End Function

推荐阅读