所以我知道这个问题已经被问了几次,但我相信我的情况有点不同(当然很高兴被证明是错误的!)更改日期fromat从mm/dd/yyyy到dd/mm/yyyy VBA
以下是数据流:用户在表单中输入日期中的日期。然后他们点击一个按钮。我的宏然后采取该日期,运行它通过以下功能:
Function AddWeekDays(StartDate As Long, Days As Long) As Date
Dim i As Long
Dim d As Date
d = StartDate
i = 0
While i < Days
d = DateSerial(Year(d), Month(d), Day(d) + 1)
If Weekday(d, vbMonday) < 6 Then
i = i + 1
End If
Wend
AddWeekDays = d
End Function
然后格式化日期从毫米更改/ DD/YYYY至DD以下列方式/ MM/YYYY:
Dim deadline As Date
Dim deadline_formatted As Date
Dim DateReceived As String
Dim DateConverted As Date
DateReceived = txt_DateReceived.Text
DateConverted = Format(DateReceived, "dd/mm/yyyy")
deadline = AddWeekDays(DateValue((CStr(DateConverted))), 9)
deadline_formatted = Format(deadline, "dd/mm/yyyy")
但是,deadline_formatted
值仍以mm/dd/yyyy格式显示。
作为一个例子,当用户进入2017年1月5日的程序应返回deadline_formatted = 12/05/2017
,但它返回deadline_formatted = 05/12/2017
我试图改变变量类型为字符串,看看是否能取得的差(它没“T),并试图通过使用下面的代码直接的截止日期变量转换为所需的格式:
deadline = Format(AddWeekDays(DateValue((CStr(DateConverted))), 9),"dd/mm/yyyy")
其仍返回不正确的格式。
任何人可以在那里提出的或者是:
- 如何修正格式问题以获得deadline_formatted到格式DD/MM/YYYY 或
- 提出了“变通方法”翻转“DD “与”毫米“(不理想显然,但如果它的工作,它的工作!)
感谢您的任何意见!
https://www.ablebits.com/office-addins-blog/2015/03/11/change-date-format-excel/ –
'deadline_formatted'是'Date',而不是'String',所以它没有以任何特定的方式“格式化”(它仅仅是数字42867)。 – YowE3K
用户通常在计算机上使用什么日期格式?说实话,我不知道你为什么要改变这种格式 - 你应该让他们以他们习惯的任何格式输入日期,然后将日期存储在Excel单元格中(如果这是它的位置去)作为日期。这样,无论用户在工作簿中看到日期,都能以任何格式查看日期,并且基于日期的任何计算都能正常工作,而无需进行各种奇怪的调整,以便从一种语言环境转换为另一种语言环境。 – YowE3K