案例敏感词典

时间:2015-07-24 08:55:41

标签: excel vba excel-vba dictionary

我已将Dictionary设置为对象,向该字典添加了几个项目,但它似乎区分大小写。无论如何我可以设置字典来识别不同的版本吗?

我的代码:

Sub Test()

Dim sheet1 As String
Dim Dict As Object
Dim c As Range

Sheet1= "TEST"
Set Dict = CreateObject("Scripting.Dictionary")

Dict.Add "MIKE", 0
Dict.Add "PHIL", 0
Dict.Add "Joe", 0

For Each c In ActiveWorkbook.Worksheets(Sheet1).UsedRange
If Dict.Exists(ActiveWorkbook.Worksheets(Sheet1).Cells(c.Row, c.Column).Value) Then
        Dict(ActiveWorkbook.Worksheets(Sheet1).Cells(c.Row, c.Column).Value) = Dict(ActiveWorkbook.Worksheets(Sheet1).Cells(c.Row, c.Column).Value) + 1
End If
Next

Sheet1.Cells(25, 3) = Dict("MIKE")
Sheet1.Cells(25, 3) = Dict("PHIL")
Sheet1.Cells(25, 3) = Dict("Joe")

Set Dict = Nothing

End Sub

所以我想认识MIKE的“mike”和PHIL等的“Phil”。

提前致谢!

2 个答案:

答案 0 :(得分:4)

我总是喜欢为我的所有编码做好准备。因此,在编写任何其他代码之前,位于我的工作表或表单中的所有模块和代码都以以下三行开头。

Option Base 0
Option Explicit
Option Compare Text

如果由于某种原因我希望在特定的Sub中处理不同的内容,那么我只在这个特定的sub中执行此操作,并按照上面的注释(示例)中的建议执行:

dict.CompareMode = BinaryCompare 'if I need a case-sensitive compare in this sub

enter image description here

由于VBE知道dict是一个字典,它可以提供自动完成的命题。这只有早期绑定才有可能。使用后期绑定VBE不会提供任何自动完成命题。 enter image description here

答案 1 :(得分:2)

添加到@Ralph

dict.CompareMode = TextCompare

是我将文件更改为。