Как запустить TreeView в пользовательских формах VBA Excel без выбора? - PullRequest
0 голосов
/ 29 июня 2018

Как видно на изображении, всякий раз, когда пользовательская форма инициализируется, есть узел, который изначально выделен. Однако проблема в том, что событие 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 голосов
/ 29 июня 2018

Вы можете установить TreeView1.SelectedItem = Nothing для отмены выбора чего угодно. Однако это не помогает, когда вы делаете это в событии Initialize, потому что при отображении формы первый элемент выбирается автоматически, если ничего не выбрано.

Так что вы должны перенести эту часть на более поздний момент. Поместив его в событие Activate, мне удалось:

Private Sub UserForm_Activate()
    Set TreeView1.SelectedItem = Nothing
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...