VBA – date的最小/最大值()

Min&Max的Excel函数是否不适用于以下代码?

Sub minmaxtest() Dim TEST_VALUES() As Date ReDim TEST_VALUES(1 To 5, 1 To 1) TEST_VALUES(1, 1) = 1 TEST_VALUES(2, 1) = 2 TEST_VALUES(3, 1) = 3 TEST_VALUES(4, 1) = 4 TEST_VALUES(5, 1) = 5 MsgBox Application.Max(TEST_VALUES) End Sub 

Dim TEST_VALUES() As Integer的情况下不存在此问题,但在将其声明为Date时发生此问题。

我试图包装在(CLng(CDate()) ,例如, TEST_VALUES(1, 1) = (CLnd(CDate(1))分配的值,但这也不能解决我在这个date执行分析的问题范围(这是这种types的variables的正确名称?)谢谢!

如果你在每个数组项上使用CDate ,你将得到5作为Max

 Sub minmaxtest() Dim TEST_VALUES() As Integer ReDim TEST_VALUES(1 To 5, 1 To 1) TEST_VALUES(1, 1) = CDate(1) TEST_VALUES(2, 1) = CDate(2) TEST_VALUES(3, 1) = CDate(3) TEST_VALUES(4, 1) = CDate(4) TEST_VALUES(5, 1) = CDate(5) MsgBox Application.Max(TEST_VALUES) End Sub 

这工作的date范围:

 Sub d() Dim a() As Variant a = Range("a1:a5").Value2 Debug.Print CDate(Application.Max(a)) End Sub 

如果性能不重要,可以尝试:

 MsgBox WorksheetFunction.Max(TEST_VALUES) 

我不知道它是否也适用于arrays。

Dim TEST_VALUES() As Variant ,它会工作。
您将variables定义为Date,并将其分配给整数。

从文档 :

如果参数不包含数字,则MAX返回0(零)。