Excel vba:重新分配集合成员



我有一个存储Date对象的Collection。我想检查日期对象的月份是否与 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功能并不重要。它只是返回DatesCollection

  • 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 

根据Microsoft的VBA文档:https://msdn.microsoft.com/en-us/library/f26wd2e5(v=vs.100(.aspx您可以添加、删除和检索集合的项目。它不建议你可以像使用 Java 列表那样直接替换项目。

您可以添加新日期并删除旧日期。

这也在 中讨论过如何更改集合项的值

相关内容

最新更新