瞎猫撞着死耗子1: 没new的模块级对象变量和必须CALL的单参数过程

2019-04-13 21:18发布

Technorati 标签: 模块级对象变量,单参数过程,call,new,VBA 今天莫名其妙调通两个地方。 第一个是关于对象变量。模块级对象变量声明的时候没new,在form open里new。过程出来之后,这个对象变量竟然不存在了。不应该呀,既然我声明了它是模块级,它就应该始终存在,虽然我是在过程之中申请的内存,可它已经被模块级变量引用了,怎么能过程一结束自己就放学了呢?没整明白。只好改成在声明里new
Private mobjATree1 As New annaTree 'TreeView6
第二个是关于过程的调用。有2个及以上参数的过程的调用是一定要用call的,而只有一个参数的过程的调用其实可以不用call。可是今天我调用对象的只有一个参数的方法,不用call揍不行。报的错是:runtime error 438: 对象不支持该属性或方法。VBA的报错机制真是太郁闷了,你若是按它的指示去猜测出错的地方,准得吐血。我之所以没吐血,是因为之前喝了点小酒,压住了点。我查了对象的方法声明、查了传给这个方法的对象参数的声明、添加了监视,都没问题。把方法的内文全部注释掉,也不成……饶是俺晕乎乎不知哪跟窍开了,加了个call,就成了。%¥&×*$%&*$%^&*
Call mobjATree2.CopyNodeFromOtherTree(mobjATree1)