ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: lee1892

[原创] VBA编程技巧 之 堆栈在树形结构中使用的实例 (BOM、树形图等)

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-24 11:29 | 显示全部楼层
本帖已被收录到知识树中,索引项:
hncslxf 发表于 2014-11-24 10:15
Lee 1892您好!
您的“堆栈在树形结构中使用的实例 By Lee1892”在工作中非常有用,我将其用于产品BOM上, ...

你数据里的名称栏有重复的,生成的文本框是用这个名称作为名字的,创建连线时是用这个名称索引文本框,所以总是连重复名称的第一个。

把起文本框名称的语句前加上行号,同样的获得父节点文本框名称前同样的加上就可以了。

比如:
  1. ...
  2.     '获得节点框名称
  3.     sName = iRow & "-" & Cells(iRow, TR_COL_INDEX).Text
  4. ...
  5.     '获得父节点框名称
  6.     sParentName = iParent & "-" & Cells(iParent, TR_COL_INDEX).Text
  7. ...
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-24 11:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
E大虾 发表于 2014-11-20 11:00
你好! 非常感谢您分享这个表,这个非常有用,我现在髟用你这个程序做BOM 以及MRP ,但发现一个问题,
当同 ...

貌似在处理堆栈时有问题,感觉当时写这个代码时根本就没有仔细测试过,而且用字典模拟堆栈似乎不是很好用。

看来有不少人将这个代码几乎毫无变动的直接使用,有必要重新写一个更通用的才好。

你的问题,可以临时改动一下代码:
  1. ...
  2.         '如果前一节点在堆栈内,且前一节点级数同当前节点,则将前一节点从堆栈内删除
  3.         If dic.exists(i - 1) Then
  4.             If dic(i - 1) = iLevelNow Then dic.Remove i - 1: iLevelLast = iLevelLast - 1
  5.         End If
  6. ...
复制代码
iLevelLast 减1 那个是增加的。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-11-24 11:57 | 显示全部楼层
感谢Lee 1892的帮助,但似乎还有点小问题:
好象在Sub CalculationAndDrawTree()中的
If iLevelNow >iLevelLast Then   要改成:
If iLevelNow >=iLevelLast Then   划线才会完全正确。
请Lee 1892专家确认一下,是不是这样?谢谢!

点评

看楼上  发表于 2014-11-24 12:05

TA的精华主题

TA的得分主题

发表于 2014-11-24 13:34 | 显示全部楼层
经过我的一个实际案例测试,好象当层级到9时会出现错误提示(400错误),当在少于等于8级时不会出现问题。
Lee 1892专家:是否还能教我一下?

感谢!

堆栈在树形结构中使用的实例 By Lee1892—lxf.zip

59.43 KB, 下载次数: 298

点评

Excel 的Outline大纲级别限制  发表于 2014-11-24 13:38

TA的精华主题

TA的得分主题

发表于 2014-11-25 17:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lee1892 发表于 2014-11-24 11:48
貌似在处理堆栈时有问题,感觉当时写这个代码时根本就没有仔细测试过,而且用字典模拟堆栈似乎不是很好用 ...

太感谢您的帮助了!

TA的精华主题

TA的得分主题

发表于 2015-9-26 08:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-10-14 10:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-3-1 13:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
哇,又见到好东东了,版主好厉害,收走试用,有问题来找版主哦

TA的精华主题

TA的得分主题

发表于 2016-4-11 15:11 | 显示全部楼层
世系图.rar (311.67 KB, 下载次数: 180)



利用大侠的树状结构做了一个家谱世系图,但在运行生成世系图代码时,出现错误400,虽然按确定后还能生成世系图,但还是请大侠能帮忙查找一下错误。多谢!

TA的精华主题

TA的得分主题

发表于 2016-6-20 06:48 | 显示全部楼层
meng196391 发表于 2016-4-11 15:11
利用大侠的树状结构做了一个家谱世系图,但在运行生成世系图代码时,出现错误400,虽然按确定后还 ...

Excel 的Outline大纲级别限制
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 07:23 , Processed in 0.046875 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表