Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: hhzjxss

[VBA] TreeView控件综合实例

  [复制链接]
发表于 2013-5-27 08:25 | 显示全部楼层
回复

使用道具 举报

发表于 2013-12-16 11:00 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-24 19:58 | 显示全部楼层
回复

使用道具 举报

发表于 2014-11-9 10:29 | 显示全部楼层
本帖最后由 青青见见 于 2014-11-9 10:34 编辑

Private Sub UserForm_Initialize()
Dim objHeaderRange As Range
Dim aintLevelNodesCount(10) As Integer
Dim intCurNodeLevel As Integer
Dim lngCurRowOffset As Long
Dim strNodeKey As String, strParentNodeKey As String
Dim l As Long
On Error Resume Next
    TreeView1.HideSelection = False
    TreeView1.LineStyle = tvwRootLines
  
    Erase aintLevelNodesCount
    intCurNodeLevel = 1
    lngCurRowOffset = 1
   
    With TreeView1
        .Nodes.Clear
        
        Set objHeaderRange = Sheet1.Range("rHeaderLevel")
        If objHeaderRange.Offset(lngCurRowOffset, 0).Value <> 1 Then GoTo label_Exit
        
        aintLevelNodesCount(intCurNodeLevel) = 1
        strNodeKey = "Level" & aintLevelNodesCount(intCurNodeLevel)
        
        ' 加入第一个节点
        .Nodes.Add Key:=strNodeKey, Text:=objHeaderRange.Offset(lngCurRowOffset, -1).Value & "-" & objHeaderRange.Offset(lngCurRowOffset, 1).Value
        
        lngCurRowOffset = lngCurRowOffset + 1
        
        While objHeaderRange.Offset(lngCurRowOffset, 0).Value <> ""
            intCurNodeLevel = objHeaderRange.Offset(lngCurRowOffset, 0).Value
            
            If objHeaderRange.Offset(lngCurRowOffset, 0).Value < objHeaderRange.Offset(lngCurRowOffset - 1, 0).Value Then
                aintLevelNodesCount(intCurNodeLevel + 1) = 0
            End If
            
            aintLevelNodesCount(intCurNodeLevel) = aintLevelNodesCount(intCurNodeLevel) + 1
            
            strNodeKey = "Level"
            
            For l = 1 To intCurNodeLevel
                strNodeKey = strNodeKey & aintLevelNodesCount(l)
            Next l
            
            If objHeaderRange.Offset(lngCurRowOffset, 0).Value = 1 Then
            
                .Nodes.Add Key:=strNodeKey, _
                        Text:=objHeaderRange.Offset(lngCurRowOffset, -1).Value
            Else
            
                strParentNodeKey = "Level"
               
                For l = 1 To intCurNodeLevel - 1
                    strParentNodeKey = strParentNodeKey & aintLevelNodesCount(l)
                Next l
               
                .Nodes.Add Relative:=strParentNodeKey, Relationship:=4, Key:=strNodeKey, _
                        Text:=objHeaderRange.Offset(lngCurRowOffset, -1).Value
            lngCurRowOffset = lngCurRowOffset + 1
        Wend
        
        Debug.Print .Nodes.Count
        
        For l = 1 To .Nodes.Count
            .Nodes(l).EnsureVisible
        Next l
        
        strNodeKey = "Level1"
        .Nodes(strNodeKey).Selected = True
    End With
    For I = 1 To TreeView1.Nodes.Count
    TreeView1.Nodes(I).Expanded = False '收起所有节点
  Next I
label_Exit:
    Set objHeaderRange = Nothing
   
End Sub
这个代码无法显示多节10行以上

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-8-19 17:18 | 显示全部楼层
收藏了再看!
回复

使用道具 举报

发表于 2019-11-10 00:31 | 显示全部楼层

显示无法装载这些对象,因为这不适用于这台电脑,是什么情况呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-4 19:45 , Processed in 0.339351 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表