我遇到了一个有挑战性的问题,我试图解决但没有成功,因此我需要一些指导。
我正在尝试使用下图所示的结构构建树状视图。在下面的示例中,有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()函数将根节点和子节点添加回去?我一直走到它找到第一个子节点最远的分支的地方,但是我不确定如何使其“返回”并搜索是否有第二个子节点,然后继续深潜。
答案 0 :(得分:1)
试穿以获取尺寸...
id
...这是使用(某种程度上)标准的Microsoft公共控件树视图。
https://www.microsoft.com/en-us/download/details.aspx?id=10019
这就是工作表中的源数据...
...并且该逻辑假定所有数据都从单元格A1开始。
如果您不使用与我相同的控件,则可以调整它,但老实说,我不能确定,但是逻辑是合理的,因此它为您提供了一个非常有用的起点。 >
我希望有帮助。