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(零)。