2010-01-05 5 views
0

J'ai un TreeView dans Excel 2007 avec des cases à cocher.Treeview Excel 2007 sélectionne par programmation les cases à cocher

  • Je veux que les cases à cocher pour être tous sélectionnés lorsque l'arbre est peuplé
  • Je veux que quand je sélectionner/désélectionner un nœud parent de la liste, tous ses enfants sont sélectionnées/désélectionnées

Voici le code que je l'ai écrit jusqu'à présent:

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 

cet arbre des données de pics d'une feuille de cette manière:

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

ParentNode

----- ------- childNode

------------ childNode

------------ childNode

ParentNode

------------ ChildNode

------------ childNode

ParentNode

------------ childNode

etc ... (vous avez l'idée , c'est une feuille excel ...)

Quel est le code de vba pour sélectionner/désélectionner les boîtes ?? J'ai beaucoup cherché et ne pouvais pas trouver une réponse à ce problème facile ....

Thx à l'avance!

Répondre

0

sur l'accès que je suppose utilise le même contrôle la propriété que vous utilisez est .checked

Il suffit de régler cela à vrai pour les boîtes que vous voulez cochés

Voici un exemple de code

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

Vous devriez être de l'adapter pour travailler en excel

+0

c'est ce que je pensais mais je ne pouvais pas trouver la bonne syntaxe pour cela, pouvez-vous me donner un exemple? – Piero

+0

Échantillon de code ajouté à mon premier message, j'espère que cela aidera –

+0

merci je vais travailler dessus demain et afficher mes résultats! – Piero

Questions connexes