如何在单元格中以 dd/mm/yyyy 格式获取今天的日期?

问题描述 投票:0回答:4

我想将今天的日期(2018 年 11 月 4 日)放入以下 (

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

excel vba date excel-2016 regional-settings
4个回答
2
投票

我认为你的算法因 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

1
投票
Sub test()
Dim sToday As String
sToday = Date
sToday = Format(sToday, "dd mm yyyy")

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

我尝试了这个,得到了想要的结果。 解决方法是将日期保存在字符串中并格式化该字符串。


0
投票

如何在单元格中以 dd/mm/yyyy 格式获取今天的日期?

由于您的配置是英国格式:

Ctrl+;


0
投票

Session.findById("wnd[0]/usr/ctxtSP$00007-HIGH").Text = Format(Now - 1, ("dd.mm.yyyy")) '昨天

© www.soinside.com 2019 - 2024. All rights reserved.