Excel VBA检测用户是否在树视图中选择父节点或子节点

时间:2018-06-13 04:15:39

标签: excel-vba vba excel

我有一个包含树视图的用户表单和2个框架,每个框架有几个文本框,标签等。

如果用户选择某些父母或他们的孩子,我想隐藏其中一个用户形式框架 使用下面的代码,我可以隐藏框架,如果用户选择一个孩子,但如果用户选择一个父,我得到一个运行时错误91“对象变量或没有设置块变量”

将Node.Parent更改为Node.Key会在选择父级时隐藏框架,但在选择子级时则不会。 如果选择了哪一个,我该如何隐藏框架? 欢迎任何指导。

If Node.Parent = "North" Or Node.Parent = "South" Or Node.Parent = "East” _
or Node.Parent = "West" Then
UserForm1.Frame1.Visible = False

1 个答案:

答案 0 :(得分:0)

If Userform1.TreeView1.Nodes(<name of node>).Parent Is Nothing Then
    <this is a parent node>
Else
    <this is a child node>
End If

在“ mousedown”事件期间,您可以使用hittest获取所选节点的名称。事件会自动填充按钮,shift,x和y

Private Sub TreeView1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)

        'hittest is looking at twips, x,y=pixels. 15 twips to a pixel (*15) to make it 
         <name of node> = TreeView1.HitTest(x * 15, y * 15)
End Sub