Solved

Treeview - looping through nodes

Posted on 2012-04-01
6
251 Views
Last Modified: 2012-04-02
Hi,

I am simply trying to loop through the nodes of my treeview control with following code:
With TaskItemsForm.trvTasks
        For Each n In trvTasks
            Debug.Print "Key :  ", .Nodes.Item.Key, "Text :   ", .Nodes.Item.Text
        Next n
     End With

Open in new window

but I am getting the error :
Compile error - argument not optional - and it highlights the ".Items" section of .Nodes.Item.Key

Any help on guiding me through this would be appreciated.

Best regards,

Craig
0
Comment
Question by:slobber72
  • 3
  • 2
6 Comments
 
LVL 33

Accepted Solution

by:
Norie earned 125 total points
ID: 37794250
Craig

Why aren't you using the loop variable n?

Have you checked what it is?

Is it a node?

Try this.
Dim N As Node

        For Each N In trvTasks.Nodes
            Debug.Print "Key :  ", N.Key, "Text :   ", N.Text
        Next N

Open in new window

0
 
LVL 46

Assisted Solution

by:Martin Liss
Martin Liss earned 125 total points
ID: 37794419
Here's code to "Walk" the nodes of a treeview.


Private Sub WalkTree(ByVal ParentNode As Node)
    
    Do Until ParentNode Is Nothing
        Debug.Print ParentNode.Text, ParentNode.Index
        WalkTree ParentNode.Child
        Set ParentNode = ParentNode.Next
    Loop

End Sub

Open in new window


Usage:

WalkTree trvTasks.Nodes(1)
0
 

Author Closing Comment

by:slobber72
ID: 37794479
Thanks guys. I am still a relative novice in coding - the different uses of methods / properties etc still gets me befuddled. You have both given me a way to cycle through the treeview and they both work really well with my code.
0
Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

 

Author Comment

by:slobber72
ID: 37794617
Hi Martin,

I am getting an error when trying to call your procedure- as I am hopeless with VBA in Excel I can't track down what the reason for it is.

When I call the procedure as below, I get the error "Type Mismatch"...

Private Sub UserForm_Initialize()
    With Me
        'Label the userform
        .Caption = "Menu Tasks Comment Form"
        ' Label the buttons
        .CommandButton1.Caption = "Close"
        .CommandButton2.Caption = "Add Comment"
        .CommandButton3.Caption = "View Comments"
        .Frame1.Caption = "Comments"
        'Null out the label
        .Label1 = vbNullString
        .TextBox1 = vbNullString
        'Label the treeview
        .TreeView1.LineStyle = tvwRootLines
        'Sort the treeview
        .TreeView1.Sorted = True
    End With
   'Populate the Treeview
    TreeView_Populate True ' populate the treeview control
    WalkTree Me.TreeView1.Nodes(1)
End Sub

Open in new window


Could you perhaps point me in the right direction as to what I am doing wrong ?

Thanks in advance.
Craig
0
 

Author Comment

by:slobber72
ID: 37794670
Hi again,

I found that I needed to change the procedure to declare the parentnode as an object, not as a node - it would appear that this is a version of treeview issue.

Private Sub WalkTree(ByVal ParentNode As Object) ' previously declared as node
    
    Do Until ParentNode Is Nothing
        Debug.Print ParentNode.Text, , ParentNode.Index, , ParentNode.Key
        WalkTree ParentNode.Child
        Set ParentNode = ParentNode.Next
    Loop

End Sub

Open in new window


Thanks again !!
0
 
LVL 46

Expert Comment

by:Martin Liss
ID: 37796587
I'm glad you were able to fix it. Not that I'm complaining but what happened between the time you said my code worked really well and the type mismatch error?

Just out of curiosity, does the following work for you?

Private Sub WalkTree(ByVal ParentNode As ComctlLib.Node)
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
Some code to ensure data integrity when using macros within Excel. Also included code that helps secure your data within an Excel workbook.
This Micro Tutorial demonstrate the bugs in Microsoft Excel for Mac with Pivot Charts.
This Micro Tutorial will demonstrate how to create pivot charts out of a data set. I also added a drop-down menu which allows to choose from different categories in the data set and the chart will automatically update.

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now