VBA - 日期的最小/最大值()

时间:2016-08-18 10:57:39

标签: excel vba excel-vba

Min& amp;的Excel功能是否有原因? Max不适用于以下代码?

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的情况下不存在此问题,但在将其声明为日期时会出现此问题。

我试图包装(CLng(CDate())中分配的值,例如TEST_VALUES(1, 1) = (CLnd(CDate(1)),但这也无法解决我在此日期范围内执行分析的问题(这是否是正确的名称)变量的类型?)谢谢!

5 个答案:

答案 0 :(得分:2)

如果您对每个数组项使用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

答案 1 :(得分:2)

这适用于一系列日期:

Sub d()

Dim a() As Variant

a = Range("a1:a5").Value2

Debug.Print CDate(Application.Max(a))

End Sub

答案 2 :(得分:0)

如果表现不重要,您可以尝试:

MsgBox WorksheetFunction.Max(TEST_VALUES)

我不确定它是否适用于数组。

答案 3 :(得分:0)

Dim TEST_VALUES() As Variant它会起作用。
您将变量定义为日期,并为其分配整数。

答案 4 :(得分:0)

来自documentation

  

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