Я пишу древовидную форму для пользовательской формы в excel. Я хочу, чтобы пользователь формы мог редактировать любое имя узла и понимать, что свойство labeledit требуется, однако я не уверен, как написать код. Любая форма помощи приветствуется.Редактирование узла в excel TreeView VBA
ответ
Вам нужен контроль ActiveX от Microsoft, уходящую в эпоху 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
для подтверждения редактирования.
Некоторые ссылки:
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
Примечание: нажмите на корню, чтобы расширить дочерние узлы (не очевидно).
- 1. Динамическое редактирование метки узла в treeview
- 2. Редактирование узла TreeView не меняет ключ TreeNode
- 3. Редактирование вопросительного знака TreeView
- 4. Excel vba Диаграмма, редактирование диапазона
- 5. Альтернатива Treeview в VBA excel 2016 64bit
- 6. Редактирование массива в коллекции Excel VBA
- 7. редактирование текста узла
- 8. Excel VBA - Создать Treeview из записей
- 9. Редактирование встроенной PowerPoint из Excel VBA
- 10. Модифицировать редактирование excel во время работы vba
- 11. Редактирование клеточного текста корневого узла в VirtualTreeView
- 12. Treeview предотвращает сбой узла
- 13. TreeView добавление проблемы узла
- 14. Изменение значения узла treeview
- 15. treeview Проверка наличия узла
- 16. Событие узла treeview
- 17. TreeView проблема выбранного узла
- 18. дочерние узлы TreeView узла
- 19. значение TreeView для узла
- 20. Добавление дочернего узла в treeview
- 21. Отображение узла TreeView в winform
- 22. Excel TreeView несколько столбцов
- 23. Редактирование размера узла JavaFX8
- 24. Редактирование узла в связанном списке
- 25. Сохранение/редактирование узла Drupal
- 26. Удаленное редактирование файлов excel
- 27. Редактирование пользовательских стилей с помощью VBA в Excel
- 28. Редактирование и назначение недавно добавленной диаграммы в Excel VBA
- 29. Treeview in vba userform
- 30. Встроить .net treeview в vba?
Вы добавляете элемент управления TreeView в пользовательскую форму, как описано в параграфе 4? –
Перейдите к вашей пользовательской форме. Затем из верхнего меню перейдите в меню Вид-> Панель инструментов. Затем в новом окне в серой пустой области щелкните правой кнопкой мыши и выберите из всплывающего меню дополнительные элементы управления, а затем в списке найдите и нажмите «Microsoft TreeView Control, версия 6.0» и нажмите «ОК». Затем появится новый значок дерева, нажмите и удерживайте, а затем перетащите его в свою форму. По умолчанию для управления будет Treeview1. –
Если у вас уже есть Treeview, я думаю, вы адаптируете код. Я озадачен ошибкой компиляции текста. В ваших Инструментах -> Ссылки у вас есть 'Microsoft Windows Common Controls 6.0 (SP6)' checked? –