Excel VBA报错:Object variable or With Block variable not set 求助
解决VBA中“Object variable or With Block variable not set”错误
错误原因
TodoItem是对象类型的类模块,而Project类里的Items()数组是TodoItem对象数组。在VBA中给对象变量赋值必须使用Set关键字,原代码直接用Items(count) = item的方式没有正确设置对象引用,因此触发该错误。
修复方案
修改Project类模块中的AddItem方法,在数组元素赋值语句前添加Set关键字:
Public Sub AddItem(item As TodoItem) If count = size Then resize End If Set Items(count) = item ' 新增Set关键字修正对象赋值 count = count + 1 End Sub
补充说明
TodoItem作为对象,数组中存储的是它的引用,必须通过Set完成赋值操作,否则会被当作值类型处理,导致引用未初始化的问题。- 初始化数组时
ReDim Items(size)会生成一组值为Nothing的对象数组元素,只有通过Set赋值后,数组才会持有有效的TodoItem对象引用。
内容的提问来源于stack exchange,提问作者Jomy
相关产品推荐
相关产品推荐

