Excel精英培训网

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

[已解决]treeview中一个不可理喻的错误,求能人解决一下

[复制链接]
发表于 2012-10-19 21:56 | 显示全部楼层 |阅读模式
今天在使用treeview进行科目选择时,发现如图的一个问题(隔了好几行的内容,居然跳到该行的节点下),不知是什么原因造成的。
快照1.jpg
Treeview会计科目.zip (22.27 KB, 下载次数: 14)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-10-20 06:54 | 显示全部楼层
本帖最后由 hwc2ycy 于 2012-10-20 07:14 编辑

QQ截图20121020071332.jpg
关键字重复了。
你VBE里设置忽略了错误。
回复

使用道具 举报

发表于 2012-10-20 06:55 | 显示全部楼层
回复

使用道具 举报

发表于 2012-10-20 07:10 | 显示全部楼层
本帖最后由 hwc2ycy 于 2012-10-20 07:46 编辑
  1. Private Sub UserForm_Initialize()
  2.     Dim objHeaderRange As Range
  3.     Dim aintLevelNodesCount(10) As Integer
  4.     Dim intCurNodeLevel As Integer
  5.     Dim lngCurRowOffset As Long
  6.     Dim strNodeKey As String, strParentNodeKey As String
  7.     Dim l As Long
  8.     On Error Resume Next
  9.     TreeView1.HideSelection = False
  10.     TreeView1.LineStyle = tvwRootLines  '显示出表示可扩展节点的“+”号
  11.     Me.Caption = "会计科目"

  12.     Erase aintLevelNodesCount
  13.     intCurNodeLevel = 1
  14.     lngCurRowOffset = 1

  15.     With TreeView1
  16.         .Nodes.Clear

  17.         Set objHeaderRange = Sheet1.Range("rHeaderLevel")
  18.         If objHeaderRange.Offset(lngCurRowOffset, 0).Value <> 1 Then GoTo label_Exit

  19.         aintLevelNodesCount(intCurNodeLevel) = 1
  20.         strNodeKey = "Level" & Format(aintLevelNodesCount(intCurNodeLevel), "00")

  21.         ' 加入第一个节点
  22.         .Nodes.Add Key:=strNodeKey, Text:=objHeaderRange.Offset(lngCurRowOffset, -1).Value

  23.         lngCurRowOffset = lngCurRowOffset + 1

  24.         While objHeaderRange.Offset(lngCurRowOffset, 0).Value <> ""
  25.             intCurNodeLevel = objHeaderRange.Offset(lngCurRowOffset, 0).Value

  26.             If objHeaderRange.Offset(lngCurRowOffset, 0).Value < objHeaderRange.Offset(lngCurRowOffset - 1, 0).Value Then
  27.                 aintLevelNodesCount(intCurNodeLevel + 1) = 0
  28.             End If

  29.             aintLevelNodesCount(intCurNodeLevel) = aintLevelNodesCount(intCurNodeLevel) + 1

  30.             strNodeKey = "Level"

  31.             For l = 1 To intCurNodeLevel
  32.                 strNodeKey = strNodeKey & Format(aintLevelNodesCount(l), "00")
  33.             Next l

  34.             If objHeaderRange.Offset(lngCurRowOffset, 0).Value = 1 Then
  35.                 ' add a root node
  36.                 .Nodes.Add Key:=strNodeKey, _
  37.                            Text:=objHeaderRange.Offset(lngCurRowOffset, -1).Value
  38.             Else
  39.                 ' add a child node
  40.                 strParentNodeKey = "Level"

  41.                 For l = 1 To intCurNodeLevel - 1
  42.                     strParentNodeKey = strParentNodeKey & Format(aintLevelNodesCount(l), "00")
  43.                 Next l
  44.                 .Nodes.Add Relative:=strParentNodeKey, Relationship:=4, Key:=strNodeKey, _
  45.                            Text:=objHeaderRange.Offset(lngCurRowOffset, -1).Value
  46.             End If
  47.             lngCurRowOffset = lngCurRowOffset + 1
  48.         Wend

  49.         Debug.Print .Nodes.Count

  50.         For l = 1 To .Nodes.Count
  51.             .Nodes(l).EnsureVisible
  52.         Next l

  53.         strNodeKey = "Level01"
  54.         .Nodes(strNodeKey).Selected = True
  55.         
  56.     End With

  57. label_Exit:
  58.     Set objHeaderRange = Nothing

  59.     For i = 1 To TreeView1.Nodes.Count    '以下三行代码是为了默认收缩状态
  60.         TreeView1.Nodes(i).Expanded = False
  61.     Next

  62. End Sub
复制代码
回复

使用道具 举报

发表于 2012-10-20 07:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hwc2ycy 于 2012-10-20 07:47 编辑

Treeview会计科目.rar (26.04 KB, 下载次数: 30)
回复

使用道具 举报

发表于 2012-10-20 07:23 | 显示全部楼层
  1. strNodeKey = "Level01"
  2. .Nodes(strNodeKey).Selected = True
复制代码
这两句可读性不高,而且没有通用性。
不如改成
  1. .Nodes(1).Selected = True
复制代码
比较好。
回复

使用道具 举报

 楼主| 发表于 2012-10-20 08:18 | 显示全部楼层
多谢班管的鼎力相助
回复

使用道具 举报

发表于 2012-10-20 08:38 | 显示全部楼层
蝶·舞 发表于 2012-10-20 08:18
多谢班管的鼎力相助

沾你光,也学下TREEVIEW,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 06:48 , Processed in 0.619761 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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