日期格式在excel vba中不起作用

时间:2018-06-13 08:43:41

标签: excel-vba date-formatting vba excel

我的日期拣选日期有些困难。 StartDate和EndDate是来自DatePicker和Debug.Print的值将给我" mm / dd / yyyy"。我正在尝试将日期格式更改为" dd / mmm / yyyy"这样我就可以将它与来自MS访问的数据进行比较。但它没有用。

av_interleaved_write_frame

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

提前致谢!

4 个答案:

答案 0 :(得分:0)

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

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"

答案 1 :(得分:0)

如果您需要在VBA中设置日期格式,您有两个选项:

  1. 更改区域设置;
  2. 写入Excel,格式化并带上.Text
  3. Option Explicit
    
    Sub TestMe()
    
        Dim StartDate As Date
    
        StartDate = #6/11/2018#
        Cells(1, 1) = StartDate
        Cells(1, 1).NumberFormat = "DD/MMM/YYYY"
        Debug.Print Cells(1, 1).Text '11.Jun.2018
    
    End Sub
    

答案 2 :(得分:0)

根据MSDN Application.International(Index)方法返回有关当前国家/地区和国际设置的信息。

将索引应用为xlDateOrder

0 = month-day-year
1 = day-month-year
2 = year-month-day

因此,我们将使用此属性来覆盖系统行为。当在具有各种区域设置的地理区域中使用Excel-VBA项目时,这尤其有用。

下面,我正在重新编写您的代码,只需稍作调整即可。格式函数返回字符串,但您将其分配给导致此问题的日期。

Sub cmdSubmit_Click()
    Dim StartDate As Date, EndDate As Date
    Dim strStartDate as String, strEndDate as String

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

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

    Debug.Print StartDate           ' It will give 11/Jun/2018
    Debug.Print EndDate
End Sub

答案 3 :(得分:0)

谢谢大家。我设法弄清楚了,但是我投票赞成jainashish,因为它更接近于如何使用结果查询访问数据库。