日期格式在excel vba中不起作用
我在挑选约会对象方面遇到了一些困难。StartDate和EndDate是来自DatePicker和Debug的值。Print将显示“mm/dd/yyyy”。我正在尝试将日期格式更改为“dd/mmm/yyyy”,以便能够将其与MS access中的数据进行比较。但它不起作用日期格式在excel vba中不起作用,excel,date-formatting,vba,Excel,Date Formatting,Vba,我在挑选约会对象方面遇到了一些困难。StartDate和EndDate是来自DatePicker和Debug的值。Print将显示“mm/dd/yyyy”。我正在尝试将日期格式更改为“dd/mmm/yyyy”,以便能够将其与MS access中的数据进行比较。但它不起作用 Sub cmdSubmit_Click() Dim StartDate As Date, EndDate As Date StartDate = DTPickStart.Value ' 6/11/201
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
对我在这里做错了什么有什么建议吗
提前谢谢 格式可能会以您想要的格式返回日期,但随后会将其转换为日期值,然后以系统的默认格式打印。要以您想要的格式存储它们,您可以尝试以下方法:
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"
如果需要在VBA中设置日期格式,则有2个选项:
。文本
:根据Application.International(Index)方法返回有关当前国家/地区和国际设置的信息 当您将索引作为xlDateOrder应用时
0 = month-day-year
1 = day-month-year
2 = year-month-day
因此,我们将使用此属性覆盖系统行为。当Excel VBA项目跨具有各种单独区域设置的地理位置使用时,这尤其有用
下面,我对您的代码进行了一个小小的修改。Format函数返回字符串,但您将其指定给导致此问题的日期
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
谢谢大家。我设法找到了答案,但我投了Jainashih一票,因为这更接近于我如何使用结果查询access数据库。这是Excel中的一个已知问题。通常,它与系统的区域设置有关。默认情况下,Excel从中选择日期。检查您的区域设置,那里的日期格式是mm/dd/yyyy。@Jainashih,我的短日期区域设置确实是M/d/yyy,但我无法更改区域设置,因为文件必须共享给多个用户。谢谢您是否尝试过Application.International(xlDateOrder)获取最终用户日期格式,然后相应地处理日期?
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