|
本帖最后由 hwc2ycy 于 2012-10-20 07:46 编辑
- 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 '显示出表示可扩展节点的“+”号
- Me.Caption = "会计科目"
- 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" & Format(aintLevelNodesCount(intCurNodeLevel), "00")
- ' 加入第一个节点
- .Nodes.Add Key:=strNodeKey, Text:=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 & Format(aintLevelNodesCount(l), "00")
- Next l
- If objHeaderRange.Offset(lngCurRowOffset, 0).Value = 1 Then
- ' add a root node
- .Nodes.Add Key:=strNodeKey, _
- Text:=objHeaderRange.Offset(lngCurRowOffset, -1).Value
- Else
- ' add a child node
- strParentNodeKey = "Level"
- For l = 1 To intCurNodeLevel - 1
- strParentNodeKey = strParentNodeKey & Format(aintLevelNodesCount(l), "00")
- Next l
- .Nodes.Add Relative:=strParentNodeKey, Relationship:=4, Key:=strNodeKey, _
- Text:=objHeaderRange.Offset(lngCurRowOffset, -1).Value
- End If
- lngCurRowOffset = lngCurRowOffset + 1
- Wend
- Debug.Print .Nodes.Count
- For l = 1 To .Nodes.Count
- .Nodes(l).EnsureVisible
- Next l
- strNodeKey = "Level01"
- .Nodes(strNodeKey).Selected = True
-
- End With
- label_Exit:
- Set objHeaderRange = Nothing
- For i = 1 To TreeView1.Nodes.Count '以下三行代码是为了默认收缩状态
- TreeView1.Nodes(i).Expanded = False
- Next
- End Sub
复制代码 |
|