Excel vba map/dictionary

今天在调整一生成java代码的工具时,要用到在不同语言间互转数据类型的逻辑,原来的代码中根据excel记录的行号来计算,再到另外一个collection中获取,个人想着这也太土鳖了,于是搜了下,在vba中,没有map的概念,也没有原生的dictionary类型,是通过CreateObject("Scripting.Dictionary")得到的对象,如下所示:

Dim dict
Set dict = CreateObject("Scripting.Dictionary")

' 增加项目
dict.Add "int", "I"
dict.Add "int64", "L"
dict.Add "double", "B"

' 统计项目数
n = dict.Count

' 删除项目
dict.Remove ("int")

' 判断字典中是否包含关键字
dict.exists ("int64")

' 取关键字对应的值,注意在使用前需要判断是否存在key,否则dict中会多出一条记录
Value = dict.Item("B")

' 修改关键字对应的值,如不存在则创建新的项目
dict.Item("B") = "double"
dict.Item("I") = "int"

' 对字典进行循环
k = dict.keys
v = dict.Items
For i = 0 To dict.Count - 1
key = k(i)
Value = v(i)
MsgBox key & Value
Next

' 删除所有项目

dict.Removeall

注意:如果key是excel单元格,比如.Sheets(iSheet).Cells(iRow, 3),则不要忘了Trim(),不然可能会有潜在的前导或者后导空格。

posted @ 2017-02-22 12:31  zhjh256  阅读(1000)  评论(0编辑  收藏