2017-01-09 3 views
3

次のコードを使用してexcelの範囲からコレクションを作成し、ユーザーフォームのリストボックスを作成するために使用します。コードは2つの別々のマクロで何ヶ月もうまく動作していましたが、突然両方の動作が停止し、タイトルにエラーがスローされました。VBAエラー:このキーは既にこのコレクションの要素に関連付けられています

Private Sub UserForm_Initialize() 

    Dim ws As Worksheet 
    Dim LR As Long 
    Dim cell As Range 
    Dim List As New Collection 
    Dim Item As Variant 
    Set ws = Worksheets("ExpenseCATs") 

    With ws 
     LR = .Cells(.Rows.Count, 1).End(xlUp).Row 

     For Each cell In .Range("A2:A" & LR) 
      With cell 
       On Error Resume Next 
       List.Add .Text, CStr(.Value) <---------- Error 
       On Error GoTo 0 
      End With 
     Next cell 

     For Each Item In List 
         EXPListBox1.AddItem Item 
     Next Item 

    End With 

すべてのエントリがテキストであるため、私は

List.Add .Text ', CStr(.Value) 

以下のようなエラーラインの一部をコメントアウトこれはエラーをスローしませんが、リストボックスには、一意の値を移入しない、代わりにそれを示していますセル範囲内のすべての項目。

このエラーで他の投稿を見ましたが解決できませんでした。どのように修正する方法をアドバイスすることができますか、なぜ興味を持っているのか興味があります。 VBAプロジェクトで

答えて

3

、オプション - >一般 - >エラー・トラップは、Break On Unhandled Errors

をチェック:)

0

を私はコレクションに項目を追加するとキーが以前に使用されている場合、このエラーが発生したと考えています。もちろん

Dim c As New Collection 
c.add "Value1", Key:="one" 
c.add "Value2", Key:="two" 
c.add "Value3", Key:="one" '<----- this is where the error occurs because of duplicate key 

私はあなたのコードから.valueを推測することはできませんが、私は前にこのエラーを見てきました:.add(キー、値)は、例えばDictionaryオブジェクト

Collection.add(item [,Key]) 
Dictionary.add(Key, item) 

には逆の順序です。 .Valueはユニークですか?

+0

私のケースでは、上記のように設定をトラッピングするのがエラーでした –

関連する問題