形成构建树形视图结构的循环

时间:2019-05-04 12:06:02

标签: excel vba

我遇到了一个有挑战性的问题,我试图解决但没有成功,因此我需要一些指导。

我正在尝试使用下图所示的结构构建树状视图。在下面的示例中,有2个根节点。对于第一个根节点,它具有2个子节点。第一个子节点(1.A)没有“子子节点”,而第二个子节点(2.B)具有多个子和“子子”节点。 然后,第二个根节点具有相同的结构。

TreeView

为简化此问题,已创建了用于创建根节点和子节点的函数。 要创建根节点,我可以简单地执行以下操作:

    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")

一旦我运行了以上所有代码,就会生成以下内容。

TreeViewSimplified

我的问题/挑战是,如何不对其进行硬编码,如何将其逆转。因此,如果我将树结构作为具有很少数量的根节点和子级的第一张图片,那么如何构建一个将全部相加的循环。我基本上想在内部将工作表信息解析回vba代码。

对我来说,逻辑将在第一个单元格中读取,如果它不为空,则它将是根节点。然后,如果它是根节点,请搜索并查看它是否具有子节点。在这种情况下,第一个子节点是“ 1.A”,等等。

简而言之,我该如何构建一个循环,用我拥有的addRoot()和addChild()函数将根节点和子节点添加回去?我一直走到它找到第一个子节点最远的分支的地方,但是我不确定如何使其“返回”并搜索是否有第二个子节点,然后继续深潜。

1 个答案:

答案 0 :(得分:1)

试穿以获取尺寸...

id

...这是使用(某种程度上)标准的Microsoft公共控件树视图。

enter image description here

https://www.microsoft.com/en-us/download/details.aspx?id=10019

这就是工作表中的源数据...

enter image description here

...并且该逻辑假定所有数据都从单元格A1开始。

如果您不使用与我相同的控件,则可以调整它,但老实说,我不能确定,但​​是逻辑是合理的,因此它为您提供了一个非常有用的起点。 >

我希望有帮助。