我正在制作一个宏,在其中搜索日期的电子表格,其中日期的每个部分都已分解为单独的部分,例如年,月,日,时,分,秒。
我想比较这些日期并找到最早和最晚的日期。
我试图将日期成分从字符串连接到Date变量中,将Dates存储在Collection中,然后在Collection中搜索最早和最新的日期。
Dim dt As Date
Dim dtstring As String
Dim dates As New Collection
... [我只在其中设置了不相关的变量值并开始循环的代码]
dtstring = "#" & day & "/" & month & "/" & year & " " & hour & ":" & minute & ":" & second & "#"
dt = dtstring
dates.Add dt 'add a Date into the dates collection
这不喜欢从字符串设置我的Date变量值dt,但是我发现的每个示例中都用类似的东西来对Date变量进行硬编码
Dim dteAppointment As Date = #8/2/2007 14:02:00#
我需要由六个日期组件设置它。
在此方面的任何帮助都将受到赞赏。
答案 0 :(得分:1)
在假定条件下,您仍然可以使用原始日期,只需使用:
Application.WorksheetFunction.Max(<Range>)
和
Application.WorksheetFunction.Min(<Range>)
分别。
这将为您返回结果,而无需执行任何疯狂的字符串格式化操作。
编辑:可能值得注意的是,返回值是Double
类型。鉴于函数会自动序列化输入日期,这没什么大不了的,但是如果要将结果返回到变量,请确保将其返回到Dim res
As Double
< / strong>,而不是As Date
然后,如果您希望将其作为Date
返回到特定的单元格或某个地方,只需使用内置的DateSerial()
内置方法! ;)