下面是一张我的U盘文件夹组织结构的图片。
使用计算机查找文件时,大家几乎都会习惯性地一级级打开计算机文件夹目录,然后找到某文件夹下的文件。在上图中,若我们单击左侧某文件夹扩展显示子文件夹,直至某文件夹下的文件,同时右侧会显示文件夹下的子文件夹和文件;若我们单击右侧的文件夹,左侧的树状目录也会相应扩展显示子文件夹。
很熟悉的树状目录!无处不在的树状目录!
下面我们就来讲解使用VBA制作类似上述树状目录的代码。
代码功能
根据工作表中的数据,自动生成树状目录。
程序代码
代码解析
下面,我们详细讲解上述代码。
代码.Nodes.Add在Nodes集合中添加一个Node对象并将其赋值给变量setNode。
参数key指定节点的唯一的键值。
参数text 指定节点显示的文本。
参数LineStyle设置在节点前放置 /-号。
参数Expanded设置节点是否扩展,代码中设置为False表示收缩节点。
示例工作表如下图:
下面的代码:
生成的树状根目录如下图所示:
代码.Nodes.Add(wks.Range('B' & i).Text, tvwChild)添加子节点,其键值为列B中的文本,且由该键值的文本命名的节点的子节点。后面的代码与添加根节点一样,指定添加的节点的键值、文本和形式。
对上图所示的工作表,完整的代码运行后的结果如下图所示:
为了进一步加深对代码的理解,我们将在上面的工作表中添加数据,再看看运行后的效果。如下图所示的工作表,我们在列B和列C中添加了节点数据。
运行后的效果如下图所示:
通过上面代码运行效果对比,可以看出,在列A中放置根节点数据,列C中放置的是根节点下各级子节点的数据,而列B用于确定相应的列C中的子节点放置在哪个根节点下或者哪个子节点下。
因此,您只需要在列A、列B、列C中按照这样的规律放置数据,就可以使用trewViewPopulate过程代码制作出想要的树状目录图。
当然,TreeView控件提供了许多外观设置,可以设置各种型式的外观来美化显示效果。
代码使用情形
使用TreeView控件制作分类清晰的树状层次目录,然后结合其他控件,可以方便地:
组织并查看相应的数据
查找并获取数据
应用示例
在用户窗体的控件工具箱中,默认没有显示TreeView控件,因此应先添加该控件,步骤如下图所示:
示例1:显示节点信息
当单击树状目录节点时,会显示该节点相关的信息。
仍以上面讲解中所示用的“节点数据”工作表为制作树状目录的工作表,下图为相应节点的示例信息工作表:
如下图所示,单击左侧某节点时,关于该节点的信息会显示在右侧的两个文本框中。
首先,按上图所示创建一个左侧为TreeView控件,右侧为两个TextBox控件的用户窗体。
然后,除输入本文开头制作树状目录的通用代码外,再输入下面的代码:
示例2:查找定额条目并自动输入到工作表
下面是一个较大型的程序,用来编制工程预算。由于代码较多,我们只讲解一下结果,在后续的案例分析文章中我们还会详细讲解这个程序。
如下图所示的用户窗体中,在右侧顶部可以选取要查找的定额。
选取后,在界面右侧下方会显示定额的层次目录,左侧会显示相应目录下的具体条目。当然,显示定额层次目录就是使用的TreeView控件,并且代码就是本文讲解的制作树状目录的通用代码。
通过在界面右侧选取定额目录,然后在左侧找到该目录下的具体条目后,双击该条目,会自动将数据输入到工作表中。
是不是很方便!
小结
本文重点介绍了制作树状目录的通用代码,并对代码进行了解释,最后使用两个应用实例讲解了代码的应用。
其实,TreeView控件的应用丰富多彩,本文只是讲解制作树状目录的通用代码,其他的留给读者自已探索,我们也会在后续专题系列中详细讲解该控件的应用。
如果您对本文介绍的内容还有什么好的示例,欢迎发送邮件给我:xhdsxfjy@163.com
也可以在本文下方留言,提出您的看法或建议。
本文属原创文章,转载请联系我或者注明出处。
联系客服