Excel VBA определяет, выбирает ли пользователь родительский или дочерний узел в виде дерева - PullRequest
0 голосов
/ 13 июня 2018

У меня есть пользовательская форма, содержащая древовидное представление и 2 фрейма, каждый с несколькими текстовыми полями, метками и т. Д.

Если пользователь выбирает определенных родителей или любого из их детей, я хочу скрыть 1 из фреймов пользовательской формы.
Используя приведенный ниже код, я могу скрыть рамку, если пользователь выбирает дочерний элемент, но если пользователь выбирает родительский элемент, я получаю ошибку времени выполнения 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 голосов
/ 05 сентября 2018
If Userform1.TreeView1.Nodes(<name of node>).Parent Is Nothing Then
    <this is a parent node>
Else
    <this is a child node>
End If

Вы можете получить имя выбранного узла, используя hittest во время события mousedown.Кнопка, 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...