У меня сложная проблема, которую я пытался решить, но безуспешно, и мне нужно некоторое руководство по этому вопросу.
Я пытаюсь построить древовидное представление со структурой, показанной на рисунке ниже. В приведенном ниже примере есть 2 корневых узла. Для первого корневого узла у него есть 2 дочерних узла. Первый дочерний узел (1.A) не имеет «дочерних узлов», тогда как второй дочерний узел (2.B) имеет несколько дочерних и «дочерних» узлов.
Тогда второй корневой узел имеет такую же структуру.
Чтобы упростить задачу, были созданы функции для создания корневых узлов и дочерних узлов.
Чтобы создать корневой узел, я могу просто сделать:
Set cRoot = Tree.AddRoot("Root Node")
Чтобы создать дочерний узел, я могу просто сделать:
Set cNode = cRoot.AddChild("1.A")
Set cNode = cRoot.AddChild("2.B")
И если я хочу погрузиться глубже в дочерний узел, я могу сделать:
Set cNode = cNode.AddChild("2.1 level2")
Set cNode = cNode.AddChild("2.1.1 level3")
После запуска всего вышеприведенного кода будет сгенерировано ниже.
Мой вопрос / задача заключается в том, чтобы, не жестко запрограммировав, изменить его. Итак, если у меня есть древовидная структура в качестве первого изображения с небольшим количеством корневых узлов и дочерних элементов, как построить цикл, который будет добавлять все. Я в основном хочу проанализировать информацию листа обратно в код vba.
Для меня логика будет читаться первой ячейкой, если она не пуста, то это будет корневой узел. Затем, если это корневой узел, найдите и посмотрите, есть ли у него дочерний узел. В этом случае первый дочерний узел - «1.A» и т. Д.
Короче говоря, как мне создать цикл, который будет добавлять корневой и дочерний узлы обратно с помощью функций addRoot () и addChild (), которые у меня есть? Я зашел так далеко, что нашел самую дальнюю ветвь первого дочернего узла, но я не уверен, как заставить его «вернуться», и ищу, есть ли второй дочерний узел, а затем продолжаю погружение глубже.