2010-01-05 88 views
0

我有一個在複選框的Excel 2007中的TreeView。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 

這種樹拾取從以這種方式的片材數據:

---甲--------- ---------乙Ç--------- d

ParentNode

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

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

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

ParentNode

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

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

ParentNode

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

等..(你的想法,其excel表......)

什麼是vba代碼選擇/取消選擇框?我一直在尋找很多,無法找到這個簡單問題的答案....

Thx提前!

回答

0

在訪問我假設你使用使用屬性.checked

只是設置爲true,你想打勾

這裏的箱子是一個代碼示例

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

你應該適應它在excel中的工作

+0

這是我的想法,但我找不到正確的語法,你能給我一個例子嗎? – Piero 2010-01-05 10:55:15

+0

代碼示例添加到我的第一篇文章,希望可以幫助 – 2010-01-05 11:08:41

+0

謝謝我明天就會處理它併發布我的結果! – Piero 2010-01-05 12:19:38