我有Collection
存储Date
个对象。我想检查一个月份对象的月份是否与1不同,如果是,则将其设置为1.
Sub displayColl()
Dim globals As Object
Set globals = getGlobalVariables()
Dim dates As Collection
Set dates = getResultDates(globals("MIN_DATE"), globals("MAX_DATE"), False)
Dim i As Integer
For i = 1 To dates.Count
Debug.Print dates(i)
Next
Debug.Print "After"
For i = 1 To dates.Count
Debug.Print dates(i)
dates(i) = DateSerial(year(dates(i)), 1, Day(dates(i)))
Next
End Sub
但是,此代码不起作用 - 我得到Object requered error
。这是为什么?什么是正确的方法?
编辑:
getResultDates
功能并不重要。它只返回Collection
Dates
。
同样适用于getGlobalVariables
- 它返回一个包含用户信息的字典,包括用户编写的最小和最大日期。
错误发生在Set dates(i) = DateSerial(year(dates(i)), 1, Day(dates(i)))
行。
删除Set
并没有取得任何成就。
我确信dates
Collection
包含日期。
调试输出:
01.01.2014
01.02.2014
01.03.2014
01.04.2014
01.05.2014
01.06.2014
01.07.2014
01.08.2014
01.09.2014
01.10.2014
01.11.2014
01.12.2014
01.01.2015
01.02.2015
01.03.2015
01.04.2015
01.05.2015
01.06.2015
01.07.2015
01.08.2015
01.09.2015
01.10.2015
01.11.2015
01.12.2015
01.01.2016
01.02.2016
01.03.2016
01.04.2016
01.05.2016
01.06.2016
01.07.2016
01.08.2016
01.09.2016
01.10.2016
01.11.2016
01.12.2016
01.01.2017
After
01.01.2014
答案 0 :(得分:4)
根据微软的VBA文档: https://msdn.microsoft.com/en-us/library/f26wd2e5(v=vs.100).aspx 您可以添加,删除和检索集合的项目。它并不建议您可以直接替换项目,例如使用Java List。
您可以添加新日期并删除旧日期。