gpt4 book ai didi

vba - 为什么向日期传递 1 时会返回 "31-12-1899"?

转载 作者:行者123 更新时间:2023-12-01 18:14:44 26 4
gpt4 key购买 nike

enter image description here

我使用的是 Windows 10 操作系统 excel 13,因此在下面的代码中 1 应该返回 1/1/1900 对吗?下面没有原因。

关于this问题 OP 通过了 2016 并得到了与我相同的结果,所以如果存在一些错误,为什么我在通过 2016 时得到与 OP 相同的结果?

Sub ndat()

Dim dt As Date
dt = 2016
Debug.Print "dt is " & dt

End Sub

enter image description here

最佳答案

整数和日期在 VBA 中的映射与在工作表中的映射不同。例如:

Sub marine()
Dim i As Integer, d As Date
Dim mgs As String

msg = ""
For i = -10 To 10
d = CDate(i)
msg = msg & i & vbTab & Format(d, "mm/dd/yyyy") & vbCrLf
Next i

MsgBox msg
End Sub

产品:

enter image description here

请注意,您可以获得 1/1/1900 之前的日期

编辑#1:

这可能有助于理解其中的差异。我在A列中放入了一些整数。

B1中,我输入=A1并复制下来。我将 B 列设置为以日期格式显示。

我使用这个 UDF():

Public Function VBA_Date(i As Long) As String
VBA_Date = Format(CDate(i), "mm/dd/yyyy")
End Function

填充C列:

enter image description here

注意第 19 行和第 20 行之间的过渡

关于vba - 为什么向日期传递 1 时会返回 "31-12-1899"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36378476/

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