gpt4 book ai didi

sql-server - VBA 的 IsDate 函数无法识别 SQL Server 日期时间

转载 作者:行者123 更新时间:2023-12-02 15:22:32 25 4
gpt4 key购买 nike

SQL Server datetime 值在 CSV 文件中表示为 2015-01-29 19:23:00.000(例如)。

不幸的是,VBA 的 IsDate 函数在 Excel 宏中计算时无法将其识别为有效日期(我猜测是因为秒的小数部分)。 DateValue 也无法转换该值。

是否有 VBA 调整来实现此功能,或者我是否需要去掉秒的小数部分?

** 编辑 **

让事情变得更加复杂的是,ActiveCell.Value 将文本值(例如 2015-05-20 15:31:30.000)转换为十进制(例如 >42144.4166666667)。因此,Evaluate 技巧将不起作用。

为了更好地说明情况,代码如下:

'
' format a CSV file for better readability
'
Sub FormatCSV

' move top-left corner
Range("A2").Select

' while the current cell's value is not empty
Do While Not IsEmpty(ActiveCell)

' 2015-05-20 15:31:30.000 => 42144.4166666667
Debug.Print ActiveCell.Value

' if the cell contains a date
If IsDate(ActiveCell) Then

' format entire column as date/time
ActiveCell.EntireColumn.NumberFormat = "mm/dd/yy hh:mm"

End If

' resize
ActiveCell.EntireColumn.AutoFit

' move a column to the right
ActiveCell.Offset(0, 1).Select

Loop

' move top-left corner
Range("A2").Select

End Sub

最佳答案

似乎 VBA 不喜欢日期字符串中的小数时间。

您可以执行以下操作之一:

  1. 去掉您已经注意到的小数时间。
  2. 或者您可以使用 CDate(Evaluate("=DateValue(""2015-01-29 19:23:00.000"")"))

这是一个 samble VBA Sub:

Sub Macro1()
Dim d As String
Dim v As Variant
d = "2015-01-29 19:23:00.000"
v = CDate(Evaluate("=DateValue(""" + d + """)"))
Debug.Print IsDate(v)
Debug.Print v
End Sub

打印出:

True
1/29/2015

关于sql-server - VBA 的 IsDate 函数无法识别 SQL Server 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com