Treeview Excel 2007 программно выбирает флажки

У меня есть TreeView в Excel 2007 с флажками.

  • Я хочу, чтобы все флажки были выбраны при заполнении дерева
  • Я хочу, чтобы при выборе/отмене выбора родительского узла списка все его дочерние элементы были выбраны/не выбраны

Вот код, который я написал до сих пор:

Private Sub UserForm_Initialize()

 'Set control defaults
 With Me
      .CommandButton1.Caption = "Close"
      .Label1 = vbNullString
      .ZonesTree.LineStyle = tvwRootLines
 End With

 'Populate the Treeview
 Call TreeView_Populate

End Sub

Private Sub TreeView_Populate()

Dim wbBook As Workbook
Dim wsZones As Worksheet
Dim rngZones As Range
Dim rngCinemas As Range
Dim lngRows As Long

Set wbBook = ThisWorkbook
Set wsZones = wbBook.Worksheets("Cinemas")

'lngRows = wsZones.Range("A65536").End(xlUp).row
lngRows = wsZones.UsedRange.Rows.Count
Set rngZones = wsZones.Range("A1:A" & lngRows)

Dim rngBC As Range
Set rngBC = wsZones.Range("B1:C" & lngRows)


Dim rCell As Range
Dim lastCreatedKey As String
Dim rowCount As Integer
Dim currentRowRange As Range
rowCount = 1
lastCreatedKey = ""

With Me.ZonesTree.Nodes
      'Clear TreeView control
      .Clear

        For Each rCell In rngZones
            If Not rCell.Text = "" Then
                .Add Key:=rCell.Text, Text:=rCell.Text
                lastCreatedKey = rCell.Text
            Else
                Set currentRowRange = rngBC.Rows(rowCount)
                .Add Relative:=lastCreatedKey, relationship:=tvwChild, Key:=currentRowRange.Cells(, 2).Text, Text:=currentRowRange.Cells(, 1).Text
            End If
            rowCount = rowCount + 1
        Next rCell
End With
End Sub

Private Sub Treeview1_NodeClick(ByVal Node As MSComctlLib.Node)
 Me.Label1.Caption = Node.Key
End Sub


Private Sub CommandButton1_Click()
 Unload Me
End Sub

Это дерево выбирает данные с листа следующим образом:

---A---------B---------C---------D

Родительский узел

------------ Дочерний узел

------------ Дочерний узел

------------ Дочерний узел

Родительский узел

------------ Дочерний узел

------------ Дочерний узел

Родительский узел

------------ Дочерний узел

и т.д... (вы поняли, это лист Excel...)

Что такое код vba для выбора/отмены выбора ящиков?? Я много искал и не мог найти ответ на эту простую проблему....

Спасибо заранее!


person Pierre    schedule 05.01.2010    source источник


Ответы (1)


При доступе, который, как я предполагаю, использует тот же элемент управления, используемое вами свойство .checked

Просто установите это значение true для полей, которые вы хотите отметить.

Вот пример кода

Set iNode = objTree.Nodes.Add(strParent,tvwChild, strKey, strText)
iNode.Checked = true

Вы должны быть адаптировать его для работы в Excel

person Kevin Ross    schedule 05.01.2010
comment
это то, что я думал, но я не мог найти правильный синтаксис для этого, можете ли вы привести мне пример? - person Pierre; 05.01.2010
comment
Пример кода добавлен в мой первый пост, надеюсь, что это поможет - person Kevin Ross; 05.01.2010