2016-12-29 267 views
1

我正在爲excel中的用戶窗體編寫樹視圖。我希望允許表單的用戶能夠編輯任何節點的名稱並理解標記的屬性是必需的,但我不確定編寫代碼的方式。任何形式的幫助表示感謝。在excel中編輯節點TreeView VBA

回答

1

你需要從微軟追溯到時代的一個ActiveX控件的Visual Basic 6.0(VBA是VB6的變體)

試試這個

https://msdn.microsoft.com/en-us/library/ms172635(v=vs.90).aspx

一對地方控制通過轉到控制工具箱然後從列表中選擇其他控件然後從列表中選擇其他控件Microsoft TreeView Control, version 6.0

使用對象瀏覽器並選擇TreeView類允許對您需要使用的方法和事件進行調查。必須將LabelEdit屬性設置爲tvwAutomatic,並允許系統處理編輯,並使用AfterLabelEdit或一組LabelEdit屬性設置爲tvwManual,並且如果用戶雙擊該節點,那麼您將捕獲的是DoubleClick事件,並手動請致電StartLabelEdit,使用AfterLabelEdit驗證編輯。

一些鏈接:

LabelEdit Property

VB Coding Tip Treeview - Label-Editing

一些示例代碼

Option Explicit 


Private Sub TreeView1_DblClick() 
    Dim nodSelected As MSComctlLib.Node 
    Set nodSelected = TreeView1.SelectedItem 
    If nodSelected.Text <> "root" Then 
     TreeView1.StartLabelEdit 
    End If 
End Sub 

Private Sub UserForm_Initialize() 

    TreeView1.Style = tvwTreelinesPlusMinusText 
    TreeView1.LabelEdit = tvwManual 

    'Add some nodes to the TreeView 
    Dim nodRoot As MSComctlLib.Node 
    Set nodRoot = TreeView1.Nodes.Add(Key:="root", Text:="root") 

    ' 
    Dim nodChildren(1 To 2) As MSComctlLib.Node 
    Set nodChildren(1) = TreeView1.Nodes.Add(nodRoot, tvwChild, "child 1", "child 1") 
    Set nodChildren(2) = TreeView1.Nodes.Add(nodRoot, tvwChild, "child 2", "child 2") 

    Dim nodGrandChildren(1 To 3) As MSComctlLib.Node 
    Set nodGrandChildren(1) = TreeView1.Nodes.Add(nodChildren(1), tvwChild, "grandchild 1", "grandchild 1") 
    Set nodGrandChildren(2) = TreeView1.Nodes.Add(nodChildren(2), tvwChild, "grandchild 2", "grandchild 2") 
    Set nodGrandChildren(3) = TreeView1.Nodes.Add(nodChildren(2), tvwChild, "grandchild 3", "grandchild 3") 

End Sub 

Private Sub TreeView1_AfterLabelEdit(Cancel As Integer, NewString As String) 
    ' Make sure that we have a value in the Label 
    If Len(NewString) < 1 Then 
     ' The Label is empty 
     MsgBox "Error! You must enter a value" 
     Cancel = True 
    Else 
     MsgBox "You successfully edited label to " & NewString 
    End If 
End Sub 

注:點擊根展開子節點(不是很明顯)。

+0

如第4段所述,您是否將TreeView控件添加到用戶窗體? –

+0

轉到您的用戶表單。然後從頂部菜單進入查看 - >工具箱。然後在灰色空白區域的新窗口中右鍵單擊並從彈出菜單中選擇附加控件,然後在列表中找到並單擊「Microsoft TreeView控件6.0版」,然後單擊確定。然後會出現一個新的樹狀圖標,點擊並按住,然後將其拖動到您的表單中。控件的默認名稱將是Treeview1。 –

+0

如果你已經有了Treeview,那麼我想你會修改代碼。我對文本編譯錯誤感到困惑。在你的工具 - >參考文件中,你是否檢查過「Microsoft Windows Common Controls 6.0(SP6)」? –