VBA で、Collection
次のような名前付きの Cを作成しました。
Key Item
Thing1 12
Thing2 15
Thing4 7
Thing6 3
私の Excel ファイルでは、Sheet1 は次のようになります。
A B
Thing1
Thing2
Thing3
Thing4
Thing5
Thing6
C の各キーを調べて、列 A を検索し、見つかった場合は項目を列 B に入れたいと思います。結果は次のようになります。
A B
Thing1 12
Thing2 15
Thing3
Thing4 7
Thing5
Thing6 3
私は最初、コレクションをループしてキーを取得し、「A:A」で一致を検索してから、「B#」をアイテム値に設定することでこれを行うと考えていました..構文がわかりません. もっと読んだ後、値にアクセスできないと思いKey
ます。
Dim Count as Integer
Dim ItemToFind as String
Dim i as Integer
For Count = 1 to C.Count
ItemToFind = C.Key(count) 'I don't think C.Key is a valid thing
for i = 1 to 50 'there are less than 50 rows in Sheet1 to look thru
If Cells("A" & i).Value = ItemToFind Then
Cells("B" & i).Value = C.Key(count)
End If
Next i
Next Count
?Class
を使用する代わりに、新しいものを作成する必要があるのではないかと考えています。Collection
どんな助けでも大歓迎です!
編集: オブジェクトを使用しようとしていDictionary
ます。ディクショナリに項目を追加してキーを取得することはできますが、Excel セルの値がディクショナリ キーであるかどうかを確認すると、実行時エラーが発生します。
「dict」という名前の辞書があり、これにキーと値をロードしました:
dict.Add Key:=Thing, Item:=TotalThings
このコードを使用して Dictionary アイテムをループし、ワークシートの列 A に存在するかどうかを確認しています。
Dim Count as Integer
Dim KeyToFind as String
Dim i as Integer
For Count = 1 to dict.Count
KeyToFind = dict.Keys(count)
For i = 1 To 50
If oExcel.Worksheets(1).Cells("A" & i).Value = KeyToFind Then
oExcel.Worksheets(1).Cells("B" & i).Value = dict.Item(Count)
End If
Next i
Next Count
実行If oExcel.Worksheets(1).Cells("A" & i).Value = KeyToFind Then
時エラー 1004: アプリケーション定義またはオブジェクト定義のエラーが発生します。デバッグ モードで KeyToFind にカーソルを合わせると、ディクショナリの最初のキーが含まれています。