瞎貓撞著死耗子2:即使是電腦也不能繞太多彎

來源:互聯網
上載者:User

Technorati 標籤: VBA,變數聲明

 

今天又莫名其妙調過一處。

話說我聲明了一個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可能會無法正常理解……

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.