我有一个问题,在Scripting.Dictionary对象上调用Remove-Method将不起作用。
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。将其赋给字符串变量会导致问题,即在删除操作中比较失败。我尝试使用变体作为替代变量,但关键字还是转换为字符串。
发布于 2016-04-28 22:20:24
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发布于 2016-04-28 22:24:23
关键字是第二个参数("asd"),而不是数字,所以您实际上并没有删除任何东西。在添加itsms时,颠倒参数的顺序应该是可行的。
https://stackoverflow.com/questions/36917086
复制相似问题