Ant*_*ony 1 excel vba date excel-vba
01/02/2018 12:25:00 PM
我在Excel电子表格的B1单元格中有上述日期.日期是2018年2月1日,但下面是VBA代码
thedate = CDate(Application.Cells(linecount, 2))
Run Code Online (Sandbox Code Playgroud)
将此转换为2018年1月2日
我用什么VBA代码保留2018年2月01日?
如果要使用VBA返回表示在本地区域日期设置中Date
的字符串的数据类型值(在消息框中),则可以使用:01/02/2018 12:25:00 PM
01 February 2018
Dim dt as String
dt = "01/02/2018 12:25:00 PM"
MsgBox DateSerial(Mid(dt, 7, 4), Mid(dt, 4, 2), Left(dt, 2))
Run Code Online (Sandbox Code Playgroud)
如果您确实希望以您提到的特定格式返回一个字符串(在消息框中)"dd MMMM yyyy"
,您可以使用:
Dim dt as String
dt = "01/02/2018 12:25:00 PM"
MsgBox Format(DateSerial(Mid(dt, 7, 4), Mid(dt, 4, 2), Left(dt, 2)), "dd MMMM yyyy")
Run Code Online (Sandbox Code Playgroud)
如果你想存储这些数据(包括时间),或者用它来计算,那么正确的方法更像是:
Dim strMyDate as String, dtMyDate as Date
strMyDate = "01/02/2018 12:25:00 PM"
dtMyDate = DateSerial(Mid(strMyDate, 7, 4), Mid(strMyDate, 4, 2), _
Left(strMyDate, 2)) + TimeValue(Mid(strMyDate, 11))
MsgBox dtMyDate
Run Code Online (Sandbox Code Playgroud)
†请注意,这些MsgBox显示的日期/时间基于我的系统的Windows设置(如下所示),如下所示,可根据需要进行调整.(因此,上面的结果对您来说会有所不同.)
点击类型打开这些设置
region
,然后点击ᴇɴᴛᴇʀ.
DateTime实际上存储在Excel中作为数字,其中0
= December 30, 1899
和+1 = +1 day
,因此您的示例日期01 February 2018 12:25:00 PM
实际上只是DateTime序列号的格式化表示,在本例中 43132.5173611
.
MSDN:DateSerial函数(VBA)
MSDN:格式化函数(VBA)
MSDN:TimeValue函数(VBA)
Microsoft.com:如何在Excel中使用日期和时间
归档时间: |
|
查看次数: |
96 次 |
最近记录: |