【发布时间】:2015-01-16 20:19:36
【问题描述】:
背景: 我试图从日期列表中确定我有多少个独特的时间段。在其他地方,我看到了一种利用集合和错误捕获的方法(正确的术语?我的意思是“在任何情况下,“On Error Resume Next”)来构建具有唯一值的集合。我什至在我编写的其他代码中成功地使用了这个结构,但在我目前的情况下,我得到一个“错误 457:这个键已经与这个集合的一个元素相关联”。考虑到我错误地使用了该集合,我打开了一些我在 6 个月前编写的旧代码(在不同公司的不同计算机上),它使用相同的结构并且已知为 WORK。这段较旧的代码因相同的错误而中断,这是以前没有的。这是我正在进行的代码示例:
Dim rng as range
Dim TimePeriod as Collection
Set TimePeriod = New Collection
For Each rng In Range("I2:I6")
On Error Resume Next
TimePeriod.Add rng.Value, CStr(rng.Value) 'This is where the code breaks
On Error GoTo 0
Next rng
问题: 我想知道是否存在我以某种方式丢失的设置或参考库导致两段代码中断,或者如何确定这一点,因为两个代码在功能上是相同的,并且之前测试过的令人满意的代码中断像我的工作正在进行中。我预计“On Error Resume Next”会强制循环通过错误。有什么建议吗?
--Update--
range("I2:I6")中的样本数据如下:
1/21/15
1/21/15
1/21/15
1/23/15
1/27/15
【问题讨论】:
-
为了改善您的问题并“帮助我们帮助您”,我建议您给我们一个示例数据以放入 Range("I2:I6") 以复制错误。
-
@MatteoNNZ 我应该包含样本数据。对不起。现在添加。
-
@MatteoNNZ 不过,有一件事:我在另一台计算机上测试了它,它工作正常。我认为这是一个设置而不是代码问题。我希望您不会在示例数据中遇到错误。
-
我认为错误来自您的示例数据具有重复日期的事实。 “密钥已与此集合相关联”,因为您尝试添加到集合中的内容已经存在。不过,我在我的电脑上尝试了你的代码,它只是在添加到集合时跳过了重复的日期
标签: vba collections unique-index