您如何在不进行任何选择的情况下在VBA Excel用户窗体中启动TreeView?

时间:2018-06-29 06:40:40

标签: excel vba excel-vba treeview

从图像中可以看出,每当初始化用户窗体时,都会首先突出显示一个节点。但是,与此有关的问题是NodeClick事件不会触发。这会使用户对按钮不起作用的原因感到困惑。据我所知,也没有SelectedNode事件之类的东西。

突出显示的节点如下所示: Highlighted

用户窗体初始化代码:

Private Sub UserForm_Initialize()

'Insert the Chart of Accounts Categories (hard coded) then child nodes are the input accounts
TreeView1.Nodes.Add Key:="CURRENT ASSET", Text:="CURRENT ASSET"
TreeView1.Nodes.Add Key:="CURRENT LIABILITY", Text:="CURRENT LIABILITY"
TreeView1.Nodes.Add Key:="LONG TERM LIABILITY", Text:="LONG TERM LIABILITY"
TreeView1.Nodes.Add Key:="FIXED ASSET", Text:="FIXED ASSET"
TreeView1.Nodes.Add Key:="EQUITY", Text:="EQUITY"

'Populates the TreeView from previously stored data
Total_rows_Nodes = Worksheets("Node Details").Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To Total_rows_Nodes
    TreeView1.Nodes.Add Worksheets("Node Details").Cells(i, 1).Text, tvwChild, Worksheets("Node Details").Cells(i, 2).Value, Worksheets("Node Details").Cells(i, 2).Text
Next i

End Sub

1 个答案:

答案 0 :(得分:1)

您可以将TreeView1.SelectedItem = Nothing设置为“取消选择”任何内容。但这在Initialize事件中执行此操作没有帮助,因为在显示表单时,如果未选择任何内容,则会自动选择第一项。

因此,您必须将该部分移到以后。把它放到Activate事件中对我有用:

Private Sub UserForm_Activate()
    Set TreeView1.SelectedItem = Nothing
End Sub