首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA字典删除项

Excel VBA字典删除项
EN

Stack Overflow用户
提问于 2016-04-28 22:05:06
回答 2查看 3.5K关注 0票数 1

我有一个问题,在Scripting.Dictionary对象上调用Remove-Method将不起作用。

代码语言:javascript
复制
Dim temp As String
Set dict = CreateObject("Scripting.Dictionary")

dict .Add(2,"asd")
dict .Add(3,"asd")
dict .Add(4,"asd")
dict .Add(5,"asd")
dict .Add(6,"asd")

For Each Key in dict.Keys
   temp = Key
   If(Key > 3) Then
       dict.Remove(temp)
   End If
Next

运行此代码将在字典中为我生成相同数量的条目。

编辑:我只是修改了代码以更好地反映实际使用情况。事实证明,这里的字符串转换是错误的。将键转换为字符串后,字典无法正确匹配这些值。不幸的是,这并没有帮助我找到问题的解决方案。

Edit2:键对象本身的类型为Range。将其赋给字符串变量会导致问题,即在删除操作中比较失败。我尝试使用变体作为替代变量,但关键字还是转换为字符串。

EN

回答 2

Stack Overflow用户

发布于 2016-04-28 22:20:24

代码语言:javascript
复制
Sub x()

Dim dict As Scripting.Dictionary
Dim i As Variant

Set dict = New Scripting.Dictionary

dict.Add 2, "asd"
dict.Add 3, "asd"
dict.Add 4, "asd"
dict.Add 5, "asd"
dict.Add 6, "asd"

For Each i In dict.Keys()
    if i>3 then dict.Remove i
Next i


End Sub
票数 3
EN

Stack Overflow用户

发布于 2016-04-28 22:24:23

关键字是第二个参数("asd"),而不是数字,所以您实际上并没有删除任何东西。在添加itsms时,颠倒参数的顺序应该是可行的。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36917086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档