Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2610|回复: 6

[已解决]树菜单优化及增加和修改!谢谢!

[复制链接]
发表于 2014-2-14 14:20 | 显示全部楼层 |阅读模式
Private Sub UserForm_Initialize()
Dim l As Integer, J As Integer, p As Integer, k%
    Dim Lev As Integer
    Dim nodX As Node
    Dim MyRoot As String    '根
    Dim str1 As String      '参考值1
    Dim Str2 As String      '参考值2
    Dim Str3 As String      '上索引
    Dim Str4 As String      '下索引

    TreeView1.ImageList = ImageList1  '关联图片
    arr = Sheets("汇总表").Range("E2:G" & Range("E1").End(xlDown).Row)
    Lev = 2
    MyRoot = "比赛组别"
    Set nodX = TreeView1.Nodes.Add(, tvwChild, MyRoot, MyRoot, 1)

    For l = 1 To UBound(arr)
        For J = 1 To Lev
            For p = 1 To Lev
                str1 = str1 & arr(l, p)
            Next p

            On Error Resume Next
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
            Select Case J

            Case 1    '首层
                Str3 = arr(l, J)
                Set nodX = TreeView1.Nodes.Add(MyRoot, tvwChild, Str3, Str3, J + 1)

            Case Lev     '其它层

                For p = 1 To J
                    Str2 = Str2 & arr(l, p)
                Next p
                If InStr(str1, Str2) Then
                    Str2 = ""
                    str1 = ""
                    Str4 = arr(l, J)
                    Set nodX = TreeView1.Nodes.Add(Str3, tvwChild, Str4, Str4, J + 1)
                End If
                       End Select
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
            On Error GoTo 0
        Next J
    Next l
End Sub
树菜单位代码优化.zip (23.43 KB, 下载次数: 13)
发表于 2014-2-14 15:29 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub UserForm_Initialize()
  2.     Dim l As Integer
  3.     Dim nodX As Node
  4.     Dim MyRoot As String    '根
  5.     TreeView1.ImageList = ImageList1  '关联图片
  6.     arr = Sheets("汇总表").Range("E2:G" & Range("E1").End(xlDown).Row)
  7.     MyRoot = "比赛组别"
  8.     Set nodX = TreeView1.Nodes.Add(, tvwChild, MyRoot, MyRoot, 1)
  9.     On Error Resume Next
  10.     For l = 1 To UBound(arr)
  11.         Set nodX = TreeView1.Nodes.Add(MyRoot, tvwChild, arr(l, 1), arr(l, 1), 2)
  12.         Set nodX = TreeView1.Nodes.Add(arr(l, 1), tvwChild, arr(l, 2), arr(l, 2), 3)
  13.     Next
  14. End Sub
复制代码
原有代码循环太多,你都用了on error resume next就直接一次添加吧。
回复

使用道具 举报

发表于 2014-2-14 16:03 | 显示全部楼层
QQ截图20140214160612.jpg
模拟的,不知道你是要修改名称还是什么
其实修改也好,增加也好,删除也好,你都是针对这些控件操作,应该不难的。
添加的代码能理解的话。
回复

使用道具 举报

 楼主| 发表于 2014-2-14 16:42 | 显示全部楼层
修改名称、增加项目,主要是数组有点不明白!谢谢!元宵节快乐!
回复

使用道具 举报

 楼主| 发表于 2014-2-14 19:04 | 显示全部楼层
只修改节点的难度不大,但要返回数据表确有点难,而且还有数组的,不知能否帮助解答,谢谢!
回复

使用道具 举报

发表于 2014-2-14 22:21 | 显示全部楼层
心灵之舞 发表于 2014-2-14 19:04
只修改节点的难度不大,但要返回数据表确有点难,而且还有数组的,不知能否帮助解答,谢谢!

回复特定楼层的消息,在楼层下有个回复。
如果是要修改数据,那不如直接用LISTVIEW或LISTBOX来比较好。


回复

使用道具 举报

 楼主| 发表于 2014-2-15 10:08 | 显示全部楼层
如果是批量修改比赛项目名称时,则直接修改树菜单同时修改数据源则更快,不知有没有办法可以做到,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 22:28 , Processed in 0.389672 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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