on error resume next   
 Do While X <= tv.Nodes("當前節點").Child.LastSibling.Index
        tv.Nodes(X).Checked = True
        X = tv.Nodes(X).Next.Index
        If Err.Number = 91 Then
             Err.Clear
             Exit Do
        End If
 Loop
加點分如何,5分太少了吧??

解决方案 »

  1.   

    Private Sub lst1_NodeCheck(ByVal Node As MSComctlLib.Node)
        If lst1.Nodes.Count < 1 Then Exit Sub
        On Error Resume Next
        
        Dim iChecked As Boolean
        Dim i As Long
        
        iChecked = Node.Checked
        If (Node.Key = "Root") Then
            i = Node.Index + 1
            For i = Node.Index + 1 To lst1.Nodes.Count
                lst1.Nodes(i).Checked = iChecked
            Next
        ElseIf Not (Node.Parent.Key <> "" And Node.Parent.Key <> "Root") Then
            For i = Node.Index + 1 To lst1.Nodes.Count
                If lst1.Nodes(i).Parent.Key = Node.Key Then
                    lst1.Nodes(i).Checked = iChecked
                End If
            Next
        End If
    End Sub
      

  2.   

    不好意思,寫漏了一句,我調試過了
    Dim x As Integer
    On Error Resume Next
    x = tv.Nodes("當前節點").Child.FirstSibling.Index
    Do While x <= tv.Nodes("當前節點").Child.LastSibling.Index
            tv.Nodes(x).Checked = True
            x = tv.Nodes(x).Next.Index        If Err.Number = 91 Then
                Err.Clear
                Exit Do
            End If
    Loop
      

  3.   

    to hnlzh
    你个是个死循环,谢谢了!
    Richard2001的比较好用