首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用VBA在TreeView中选择节点

使用VBA在TreeView中选择节点
EN

Stack Overflow用户
提问于 2009-01-19 23:20:39
回答 5查看 20.8K关注 0票数 5

我在Excel的UserForm中有一个TreeView。从TreeView中选择节点时,将使用数据填充ListBox

当双击ListBox中的项目时,将显示一个单独的UserForm,允许用户执行以下操作。

一旦用户返回到TreeView UserForm,我希望突出显示先前选择的Node

问题是UserForm基本上会自动重置,我不知道如何使用VBA选择Node

我正在考虑是否可以手动触发NodeClick事件,因为我尝试过的其他方法都失败了。

有什么建议吗?

EN

回答 5

Stack Overflow用户

发布于 2013-06-26 22:18:13

我知道这是一个古老的问题,但我自己已经很难找到一个像样的答案了,所以我们开始吧。索引或键并不总是可用的。在create上,我将节点的完整路径放在node.tag中。双击I recall the tag value,稍后在treeview节点集合中搜索该标记。太多了?效率不高?也许吧,但它的作品每次都很有魅力,我可以根据treeview的用途在标签中使用我自己的标识符。查找代码:

代码语言:javascript
运行
复制
Sub MyTreeview_FindNode(strKey As String)
Dim myNode As Node

   For Each myNode In Me.Treeview.Nodes
       If myNode.Tag = strKey Then
          myNode.Selected = True
          myNode.EnsureVisible
          End If
       Next
End Sub 
票数 3
EN

Stack Overflow用户

发布于 2016-11-07 21:52:23

在我的Excel作品中:

代码语言:javascript
运行
复制
TreeView1.Nodes(key).Selected = True
票数 3
EN

Stack Overflow用户

发布于 2009-01-20 00:23:38

您有几个选项。首先,当TreeView UserForm显示第二个UserForm时,您需要:

  1. 保存所选节点的ID (使用窗体级或模块级变量)。然后,您需要编写一个方法来在返回到表单时选择节点。IIRC,您需要为每个节点元素都有一个唯一的“键”或ID,然后对从TreeView.FindNode返回的节点使用TreeView.Select。--或--
  2. 隐藏TreeView UserForm而不是关闭它(Me.Hide)。当第二个UserForm关闭(或按下OK/Cancel )时,再次显示TreeView UserForm (TreeViewForm.Show).
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/459589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档