vba引用DICTIONARY对象的add方法添加关键字提示“运行时错误457,提示该关键字已经与集合中的一个元素相关”
解决办法:
1.从对象浏览器查看引用的Dictionary属于哪个类库,Excel应该用Scripting类库的
2.查找有无同样名称的Dictionary对象
3.如果都找了确定没问题,那么在程序开始加上APPLICATION.SCREENUPDATING=FALSE ON ERROR RESUME NEXT,程序结尾处重置屏幕更新就解决了。
亲身经历,血的教训。希望能帮到大家。
解决办法:
1.从对象浏览器查看引用的Dictionary属于哪个类库,Excel应该用Scripting类库的
2.查找有无同样名称的Dictionary对象
3.如果都找了确定没问题,那么在程序开始加上APPLICATION.SCREENUPDATING=FALSE ON ERROR RESUME NEXT,程序结尾处重置屏幕更新就解决了。
亲身经历,血的教训。希望能帮到大家。
解决方案 »
- 怎样使Frame容器中的控件随窗体大小改变而变化
- 不论使用Sendmessage wm_gettext 还是 GetwindowText都不能取得Static控件的内容,请高手指点
- 大伙们帮我看看,这个vc做的api怎么转化为 vb的声明阿!
- 我想做个弹出式菜单?(在线等,解决就散分)
- 高分求一SQL语句!!!!!
- 请教高手,VB中如何将SQL SERVER库中的数据导出为ACCESS的MDB库
- 各位朋友:这张贴子用来收集各类数据库开发经验(回复有分)
- 我在DATAREPORT上画了一条线。top=0,上下左右边距都是0,datareport大小为2400*2800,为什么这条线打印出来却总是在离纸的上边距0.8厘米
- 请问VB6.0在哪里下阿???还有什么地方有关于VB的电子书籍???谢谢~~:(
- 再次通知
- VB 解析XML的问题
- Vfb调用Stdcall、cdcel、COM组件
拉倒吧…………
对于“第1”:一般用Dictionary对象,都是用系统提供的Scripting类库中的 Dictionary类。
若有特殊需求,才可能自己实现,或者引用别的类库中的实现。对于“第2”:一般来说,不同作用或在不同作用域中的“特定变量”,变量名都不同的。
代码中“有无同样名称的Dictionary对象”,自己难道不清楚?还需要找么…………对于“第3”:
APPLICATION.SCREENUPDATING=FALSE 基本上仅用于在Excel的VBA中使用。
如果被操作的工作表本身就没在“前台”,或者本来就是“不可见”的(比如我用VB6代码,通过
COM接口操作Excel的工作表),这句代码恐怕就没有实质作用。
最主要的,On Error Resume Next 并不是“用于解决 运行时错误457”的!
你这次的使用,似乎“解决问题”了,也许只是“巧合”、刚好能符合你的预期而已!
但别人也许需求完全不同,需要“切实处理”这种关键字重复问题时,
岂能简单用个的“On Error Resume Next”去“忽视运行时异常”就行???
实际需求不同,处理方式并不是“相同”的,你说的这个方法根本不具备通用性,
并且,我也不觉得你的应用场景中“On Error Resume Next”唯一的方法,而是有“更好”的方法!
dim dict as new dictionary
' ...
if dict.exists(key) then
msgbox key & "已经存在!"
dict.item(key) = value ' 可选
else
dict.add(key,value)
end if
' ...
dim dict as new dictionary
' ...
if dict.exists(key) then
msgbox key & "已经存在!"
dict.item(key) = value ' 可选
else
call dict.add(key,value) ' 增加个Call,或者去掉括号也可以.
end if
' ...