VBA 字典对象如果存在不工作
Posted
技术标签:
【中文标题】VBA 字典对象如果存在不工作【英文标题】:VBA Dictionary Object If Exists Not Working 【发布时间】:2020-08-11 15:45:36 【问题描述】:我正在将列中的元素与 Excel VBA 中的字典对象 (ProjectList
) 进行比较。我正在打印调试窗口的键:
For Each X In ProjectList.Keys
Debug.Print X, ProjectList(X)
Next X
它会打印一个键“A123”。
我正在使用 Exists 函数来查看“A123”是否在字典中:
X = "A123"
If ProjectList.exists(X) = False Then
do something
end if
该过程不断到达“做某事”行,就好像它在字典中没有找到 X 一样,即使它显然在其中,因为调试循环会将它打印出来。我在这里做错了什么?任何帮助表示赞赏!
【问题讨论】:
And it prints a key "A123"
- 它应该打印两件事。这两件事是什么?
您是如何填充字典的?钥匙是从哪里来的?当您打印到直接寡妇时,您可能会有不显示的不可见字符。
@GSerg 它打印值和索引:“a123 100”。中间有四个空格,但如果我查看 locals 部分中的值,则值中没有空格。我也在修剪单元格值以确保。
@freeflow 我打印了两个值,它们是相同的
@Crash a123
与 A123
不同。
【参考方案1】:
我在填充字典的部分添加了一条修剪语句。
For ThisRow = 2 To LastRow
ProjectList.Add Key:=Trim(FSht.Cells(ThisRow, 1)), Item:=ThisRow
Next ThisRow
我不知道为什么这会有所帮助,因为电子表格中的值没有空格,本地窗口显示没有空格...我完全不明白为什么这有效但确实有效。
【讨论】:
Key:=FSht.Cells(ThisRow, 1)
添加 Range 对象,而不是值。因此该值不存在。像这样Key:=FSht.Cells(ThisRow, 1).Value
使用 Range 对象的 Value 属性。以上是关于VBA 字典对象如果存在不工作的主要内容,如果未能解决你的问题,请参考以下文章