首页 > 解决方案 > 日期格式在excel vba中不起作用

问题描述

我的日期选择器日期有些困难。StartDate 和 EndDate 是来自 DatePicker 的值,而 Debug.Print 会给我“mm/dd/yyyy”。我正在尝试将日期格式更改为“dd/mmm/yyyy”,以便能够将其与来自 MS 访问的数据进行比较。但它不起作用。

Sub cmdSubmit_Click()
    Dim StartDate As Date, EndDate As Date

    StartDate = DTPickStart.Value    ' 6/11/2018
    EndDate = DTPickEnd.Value        ' 6/24/2018

    StartDate = Format(StartDate, "dd/mmm/yyyy")
    EndDate = Format(EndDate, "dd/mmm/yyyy")

    Debug.Print StartDate           ' gave me 6/11/2018 instead of 11/Jun/2018
    Debug.Print EndDate
End Sub

关于我在这里做错了什么有什么建议吗?

提前致谢!

标签: exceldate-formattingvba

解决方案


Format 可能会以您想要的格式返回日期,但随后会将其转换为日期值,然后以系统的默认格式打印。要将它们以您想要的格式存储,您可以尝试以下操作:

Option Explicit

Sub cmdSubmit_Click()
    Dim StartDate As Date, EndDate As Date
    Dim s1 As String, s2 As String

    StartDate = #6/11/2018#
    EndDate = #6/24/2018#

    'StartDate = Format(StartDate, "dd/mmm/yyyy")
    'EndDate = Format(EndDate, "dd/mmm/yyyy")

    s1 = Format(StartDate, "dd/mmm/yyyy")
    s2 = Format(EndDate, "dd/mmm/yyyy")

    Debug.Print StartDate & " - " & s1          ' gave me 6/11/2018 instead of 11/Jun/2018
    Debug.Print EndDate & " - " & s2
End Sub

或者,如果您希望它们在单元格中作为日期,您可以将NumberFormat 写入它们的范围设置为您想要的格式:

Sheet1.Range("A1") = StartDate
Sheet1.Range("A2") = EndDate
Sheet1.Range("A1:A2").NumberFormat = "dd.mmm.yyyy"

推荐阅读