试图从串联字符串中获取日期集合

时间:2018-08-20 16:55:23

标签: excel vba excel-vba basic

我正在制作一个宏,在其中搜索日期的电子表格,其中日期的每个部分都已分解为单独的部分,例如年,月,日,时,分,秒。

我想比较这些日期并找到最早和最晚的日期。

我试图将日期成分从字符串连接到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#

我需要由六个日期组件设置它。

在此方面的任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

在假定条件下,您仍然可以使用原始日期,只需使用:

Application.WorksheetFunction.Max(<Range>)

Application.WorksheetFunction.Min(<Range>)

分别。

这将为您返回结果,而无需执行任何疯狂的字符串格式化操作。


编辑:可能值得注意的是,返回值是Double类型。鉴于函数会自动序列化输入日期,这没什么大不了的,但是如果要将结果返回到变量,请确保将其返回到Dim res As Double < / strong>,而不是As Date

然后,如果您希望将其作为Date返回到特定的单元格或某个地方,只需使用内置的DateSerial()内置方法! ;)