Treeview - Expand all parents of node

M

michael.beckinsale

Hi All

I have a userform with a treeview of an account hierachy. What l am
trying to achieve with the code snippet below is find a node (in this
case with Key = "ADMIN PAY") and then expand all the parent nodes. The
code below works in that it finds the target node and expands that and
the immediate parent but does not go to the next level.

A further complication is that the node to be found can be at any
level between 2 to 7 and all parent nodes above that should be
expanded.

Any help to overcome this problem will be graetly appreciated


Private Sub CommandButton2_Click()

Dim branch As Variant
Dim ToFind As Variant

ToFind = "ADMIN PAY"

With UserForm1.TreeView1
For Each branch In .Nodes
If branch.Key = ToFind Then
branch.Expanded = True
branch.Parent.Expanded = True
End If
Next
End With

End Sub

Regards

Michael
 
J

Joel

Does this work

Private Sub CommandButton2_Click()

Dim branch As Variant
Dim ToFind As Variant

ToFind = "ADMIN PAY"

With UserForm1.TreeView1
For Each branch In .Nodes
If branch.Key = ToFind Then
branch.Expanded = True
Set NewBranch = Branch
Do while not NewBranch.Parent is nothing
Set NewBranch = NewBranch.Parent
NewBranch.Expanded = True
Loop
End If
Next
End With

End Sub
 
M

michael.beckinsale

Hi Joel,

Many thanks for helping out on this. I was trying something like the
loop you put in but just not get it to work.

It didn't work exactly as posted but l made a couple of changes and
got it working. I had to declare the variable NewBranch as Object and
rather confusingly had to insert a On Error statement for the loop
which errored out if NewBranch was nothing!

Not sure l fully understand why the loop did not work properly and if
you could throw any light on the subject l would gratefull as l dont
like throwing On error statements into code willy nilly.

Finally l want to select the 'ToFind' node. Any pointers to what the
code segment looks like?

Heres the code l ended up with:

Private Sub CommandButton2_Click()
'Purpose: To find node
Dim branch As Variant
Dim ToFind As Variant
Dim leaf As Variant
Dim NewBranch As Object

ToFind = "ADMIN NON-PAY"

With UserForm1.TreeView1
For Each branch In .Nodes
If branch.Key = ToFind Then
branch.Expanded = True
branch.Parent.Expanded = True
On Error Resume Next
Set NewBranch = branch
Do While Not NewBranch Is Nothing
Set NewBranch = NewBranch.Parent
NewBranch.Expanded = True
Loop
On Error GoTo 0
End If
Next
End With


Regards

Michael
 
J

Joel

I can't seem to get treeview working on my PC. The On Error is required
because Nothing doesn't seem to work for TreeView. You need to add a watch
item on NewBranch and step though the code and see what parent is equal to
when you get to the top or find anther property that you can use when you get
to the top.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top