2013-08-23 48 views
1

在VBA treeview用户窗体中,如何通过键或其他方法判断节点是否存在?在VBA用户窗体中是否存在关键字TreeView

有没有一种很好的方法来查看节点是否存在?

Public Sub Test 
    Dim thisNode as New Node 

    ' Determine if node exists 
    If tvNodeExample.Nodes.Item("TestKey") is Nothing Then 
    msgbox "Node Does Not Exist" 
    Else 
    Set thisNode = tvNodeExample.Nodes.Item("TestKey") 
    End If 
End Sub 
+0

http://www.cpearson.com/excel/foldertreeview.aspx –

+0

@DavidZemens,我没有看到那个讨论的方式来判断一个节点在树视图中已经存在的页面什么。在该页面中,代码递归地调用它自己,但递归地传递对父节点的引用。我可能误解了某些内容,但是我没有在那里看到我的问题的答案。 – lfrandom

+0

我做了一些更多的搜索,'.Nodes'是一个集合对象,并且一些线程暗示没有内置方法来检查集合中是否存在一个项目,而不采用错误捕获。您在下面提供的方法将起作用。只需记住'If Err.Number ...'行后面的'On Error GoTo 0'以恢复错误处理。否则,您可能会尝试查看'.Contains'是否是有效的方法http://msdn.microsoft.com/zh-cn/library/ms172935(v=vs.90).aspx –

回答

2

经过多次搜索,我发现对我来说是一个可以接受的答案,虽然我不喜欢实现。当基于密钥设置节点对象时,如果该节点不存在,则会收到错误号35601.因此,下面的代码有效。

Public Sub Test() 
    Dim thisNode as Node 

    ' Determine if node exists 

    ' Disable error handling temporairily 
    On Error Resume Next 
    Set thisNode = tvNodeExample.Nodes.Item("testKey") 
    If Err.Number = 35601 Then 

    On Error Goto ErrorHandler  

    ' Create the node 
    Set thisNode = tvNodeExample.Add(, tvwFirst, "testKey", "test Description") 
    End If 

    On Error Goto ErrorHandler 

    ' Do Stuff  

End Sub 
相关问题