|
本帖最后由 青青见见 于 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
|