Excel vba:重新分配collections成员
我有一个存储Date
对象的集合。 我想检查一个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
函数并不重要。 它只是返回一个Dates
Collection
。 -
getGlobalVariables
– 它返回一个包含用户信息的字典,包括用户写的最小和最大date。 -
Set dates(i) = DateSerial(year(dates(i)), 1, Day(dates(i)))
。 -
删除
Set
不能完成任何事情。 -
我确定
dates
Collection
包含date。
debugging输出:
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
根据微软的VBA文档: https ://msdn.microsoft.com/en-us/library/f26wd2e5( v= vs.100).aspx你可以添加,删除和检索集合的项目。 它并不build议你可以像使用Java List那样直接replace项目。
你可以添加新的date,并删除旧的date。
这在“ 如何更改集合的项目的值”中也进行了讨论
- Excel Interop 10.0中的数组移调在字符数<32000时引发exception
- 如何自动检查多个网站的时间从Excel加载?
- Excel VBA – 在第n个字符后读取记事本文件
- 循环macros,单独在所有列上工作,而不用编写长长的重复过渡列表
- 从一个Excel应用程序复制到工作表而不更改dateVBA EXCEL
- 循环macros创build一个新工作表,重命名它,从networking添加数据,然后循环直到完成
- 使用Javascript下载xlsx格式的Excel文件(将html表格导出到Excel中)
- ActiveWorkbook.Styles VBA
- 让用户导入一个Excel文档,然后用它填充一个页面