在 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#”设置为 Item 值来做到这一点……只是不确定语法。多读后,我认为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 上,它确实包含字典中的第一个键。