2015-01-16 2 views
0

ПРЕДПОСЫЛКА: Я пытаюсь определить, сколько уникальных периодов времени у меня есть из списка дат, которые есть. В другом месте я видел метод, который использует коллекции и улавливание ошибок (в любом случае это означает «Включение ошибки»), чтобы собрать коллекцию с уникальными значениями. Я даже использовал эту структуру успешно в другом коде, который я написал, но в моем текущем обстоятельстве я получаю «Ошибка 457: этот ключ уже связан с элементом этой коллекции». Думая, что я неправильно использовал коллекцию, я открыл какой-то старый код, который я написал 6 месяцев назад (на другом компьютере для другой компании), который использует ту же структуру и был известен WORK. Этот старый код разбился на ту же идентичную ошибку, которую он ранее не делал. Вот пример моего кода работы в незавершенном:Ошибка VBA 457 при использовании Collection для создания уникального списка

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-- 

Примеры данных в диапазоне ("I2: I6") следующим образом:

1/21/15 
1/21/15 
1/21/15 
1/23/15 
1/27/15 
+0

Чтобы улучшить свой вопрос и «помочь нам, чтобы помочь вам», я хотел бы предложить вам, чтобы дать нам образец данные поместите в Range («I2: I6»), чтобы воспроизвести ошибку. –

+0

@MatteoNNZ Я должен был включить образцы данных. Сожалею. Добавлено сейчас. – wackojacko1997

+0

@MatteoNNZ одно, хотя: я тестировал это на другом компьютере, и это сработало. Я думаю, что это скорее установка, а не проблема с кодом. Я ожидаю, что вы не получите ошибку с образцами данных. – wackojacko1997

ответ

1

Ваш код работает надлежащим образом в моем Excel 2007, хотя я бы переписал его, чтобы включить весь цикл в on-on-error resume next для повышения эффективности.

Я подозреваю, что вы сейчас видите ошибки из-за неправильной установки ошибки ошибки.

Проверить Инструменты/Опции, которые вы не выбрали Сломать на всех ошибок

enter image description here

+0

Так оно и было. Я не понял, что должен был быть «Перерыв на необработанных ошибках». Я сейчас здоров. Спасибо!!!!!! – wackojacko1997

-1

Постарайтесь избавиться от On Error Goto 0 линии. Посмотрите на это:

Difference between 'on error goto 0' and 'on error goto -1' -- VBA

Он поставляется с Visual Basic 6, но работает почти так же, в VBA, оказывается. Должен работать, если вы держите линию On Error Resume Next, но устраните линию On Error Goto 0.

+0

. Чем это отличается от err.clear, что описано в VBA Help, –

Смежные вопросы