我正在处理Excel宏,我想创建一个日期数组,然后遍历它,而又不知道要添加多少个日期。我以为这很简单,但是我无法使其正常工作。
我尝试使用集合:
Dim DateArr As Collection
Dim d As Date
Set DateArr = New Collection
DateArr.Add (CDate("1/1/2019"))
DateArr.Add (CDate("2/2/2020"))
For Each d In DateArr
sh.Cells(y, 27).Value = d
Next d
但是我得到一个错误,指出“对于每个控制变量必须是Variant或Object”,并在循环中突出显示d。日期不是对象吗?
我还尝试了一个变体:
Dim DateArr As Variant
DateArr.Add CDate("2/2/2020")
DateArr(1) = CDate("1/1/2019")
但是我找不到添加日期的正确语法。 .Add行给我一个“需要对象”错误,而DateArr(1)=行给我一个“类型不匹配”错误。
唯一可以做的就是标准数组:
Dim DateArr() As Date
Dim y As Integer
ReDim DateArr(1 To 2) As Date
DateArr(1) = CDate("1/1/2019")
DateArr(2) = CDate("2/2/2020")
For y = LBound(DateArr) To UBound(DateArr)
sh.Cells(y, 27).Value = DateArr(y)
Next y
但是我不知道数组中有多少个日期,因此不能使用任何静态的东西。有没有一种方法可以使用这种相同的语法而无需设置尺寸?
谢谢!
答案 0 :(得分:0)
日期是变量而不是对象
添加收藏夹是一种方法。在您的代码中,您假定它是一个函数,并添加了不必要的括号,例如
DateArr.add cdate("1/1/2019")
要使用For Each,则索引(控制)变量必须是对象或变量。
因此,如果将d变暗,则您的第一个示例应该可以正常工作(不会出现其他错误)。