MS Scripting Runtime ライブラリのディクショナリ オブジェクトを使用して、一連の配列を格納し、必要に応じて配列セルに対して操作を実行しています。これらすべてのエントリを作成するプロセスを実行するための for ループがあります。私の問題は、.exists
プロパティを使用するとTrue
、アイテムが追加される前でも返されることです。
詳細なデバッグは、.add
コマンドが使用されておらず、ループの最後まで使用されない場合でも、for ループの開始時にキーがディクショナリに追加されていることを示しています。
いくつかの異なる構成を試しましたが、失敗する簡単な例を次に示します。
Dim dTotals As Dictionary
Set dTotals = New Dictionary
dTotals.CompareMode = BinaryCompare
For Each cell In rAppID
If Not dTotals.Exists(cell) Then
Set rAppIDCells = Find_Range(cell, rAppID)
Set rAppIDValues = rAppIDCells.Offset(0, 6)
dAppIDTotal = WorksheetFunction.Sum(rAppIDValues)
dTotals.Add Key:=cell.Value, Item:=dAppIDTotal
End If
Next cell
各セルには文字列/一意の ID が含まれています。If ステートメントで、コードは最初の繰り返しでも false を返しています。