瞎猫撞着死耗子2:即使是电脑也不能绕太多弯

Technorati 标签: ,

 

今天又莫名其妙调过一处。

话说我声明了一个annatree的动态数组。annatree类里有个treeview类的成员变量。我想给这个动态数组中的其中一棵树下加个节点,然后给这个节点的tag赋值。

  1. Dim objOhterSameATree() As AnnaTree
  2. Set objOhterNode = objOhterSameATree(i).tree.Nodes.Add(Relative:=m_tree.SelectedItem.Key, Relationship:=tvwChild, Text:=objNewNode.Text, Image:=2)
  3. objOtherNode.Tag = “”

像上面这样写,F8到最后一行的时候,就会报错,“对象或with块变量未设置”。而其实监视窗口显示objOtherNode是正常的,它的tag也能看到。可是一旦直接监视objOtherNode.Tag,就是,“对象或with块变量未设置”。后来我改成这样却对了:

  1. Dim objOhterSameATree() As AnnaTree
  2. Dim treOtherSame As MSComctlLib.TreeView
  3. Set treOtherSame = objOhterSameATree(i).tree
  4. Set objOtherNode = treOtherSame.Nodes.Add(Relative:=m_tree.SelectedItem.Key, Relationship:=tvwChild, Text:=objNewNode.Text, Image:=2)
  5. objOtherNode.Tag = “”

只是,把数组里的树请出来,然后倒一下手就没错了。我在想,估计VB也有它的BUG,像我这种符合逻辑却不符合常情的别扭的超级用法,估计他们的测试员也想不到去测试,SO,我就只好自己吞下这苦果了……类似的,我还遇到一次。看下面:

  1. strParentKey = m_tree.Nodes.Item(objNode.Key).Parent.Key

运行到上面这行,会说对象或with块变量未赋值;最后改成

  1. Set objRelatedNode = m_tree.Nodes.Item(objNode.Key)
  2. strParentKey = objRelatedNode.Parent.Key

就通过了。感觉也许是太长的引用引起了编译的歧义。

 

小结:太长的引用最后借助一个中间变量周转一下,要不VBA可能会无法正常理解……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值