5

我在Excel中有TreeView一个。UserForm当从 中选择一个节点时TreeView,aListBox将填充数据。
ListBox双击其中的一个项目时,将UserForm显示一个单独的项目,允许用户进行填充。
一旦用户返回到TreeView UserForm,我希望Node突出显示之前选择的 。

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

我正在争论我是否可以手动触发一个NodeClick事件,因为我尝试过的所有其他事情都失败了。

有小费吗?

4

5 回答 5

3

我知道这是一个老问题,但我自己很难找到一个体面的答案,所以我们开始吧。索引或键并不总是可用。在创建时,我将节点的完整路径放在 node.tag 中。双击时我会回忆标签值,稍后我会在树视图节点集合中搜索标签。太多了?效率不高?也许,但它的作品每次都很有魅力,我可以根据树视图的目的在标签中使用我自己的标识符。查找代码:

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 
于 2013-06-26T14:18:13.017 回答
3

在我的 Excel 作品中:

TreeView1.Nodes(key).Selected = True
于 2016-11-07T13:52:22.790 回答
1

你有几个选择。首先,当 TreeView 用户窗体显示第二个用户窗体时,您需要:

  1. 保存所选节点的 ID(使用表单级或模块级变量)。然后,您需要编写一个方法来在返回表单时选择节点。IIRC,您需要为每个节点元素拥有一个唯一的“键”或 ID,然后将 TreeView.Select 用于从 TreeView.FindNode 返回的节点。 - 或者 -
  2. 隐藏 TreeView 用户窗体而不是关闭它 (Me.Hide)。当第二个用户窗体关闭(或按下确定/取消)时,再次显示 TreeView 用户窗体 (TreeViewForm.Show)。
于 2009-01-20T00:23:37.793 回答
0

试试这个:objTreeview.Object.Nodes(KEY_NAME).Selected=TRUE

其中 KEY_NAME 是您用于创建节点的键(字符串)

于 2015-09-18T10:58:28.063 回答
0
Set xTree = Me!tv_bom.Object
        
xTree.Nodes.Item(Index).Selected = True
于 2020-09-18T10:54:24.180 回答