注册 登录
编程论坛 Excel/VBA论坛

求助:VBA实现各表单之间更改数据的拷贝问题

jxshaoyongan 发布于 2021-06-21 18:42, 4947 次点击
我是VBA小白,想用VBA实现各个部门需要协调的
只有本站会员才能查看附件,请 登录
问题汇总和更新,部分功能已实现,由于在VBA方面确实不懂,深入一点的就不会了,特请大神帮忙,详细要求和参考表单见附件,拜谢!
3 回复
#2
厨师王德榜2021-06-23 17:35
帮你改了一下,由于时间紧,只改了总表,
只有本站会员才能查看附件,请 登录

代码写得很臭,没时间仔细做优化,主要缺点是:
1,部门表 反复打开,占用I/O
2,字典反复获取,这些都是需要优化的地方.
工作忙,优化的事情,就留给更有能力的人了.
......
如果部门表也要写类似的代码,有一个问题务必注意:
总表在关闭前,向部门表写入改动后的数据,此时部门表的某些记录,由于有写入动作,
改动标志会=1,写入后,部门表关闭,但是,部门表关闭前,由于存在改动标志=1的记录,
又要向总表反写,此时总表的改动标志会=1,总表关闭前,由于存在改动标志=1的记录,又要向部门表反写......
你这个逻辑,容易引发无限循环......
这一点务必注意.

解决的办法,我大致设想了一下,可否这样:
部门表,仍用Workbook_BeforeClose() 来决定要不要向总表改写数据.代码可以仿照我的示例来写.
总表,可以添加一个可视按钮,把原来写在总表Workbook_BeforeClose中的代码移植到按钮Click事件中来,
由按钮的点击,人为的控制要不要向部门表中写数据.
我想,这样,大概可以避免无限循环,具体如何? 我没时间试验了,靠你自己了.


#3
jxshaoyongan2021-06-25 10:48
回复 2楼 厨师王德榜
让您见笑了,见识了什么是VBA小白,空白的白,非常感谢大神的解答!
#4
厨师王德榜2021-06-25 14:07
今天抽时间完善了总表和三个部门表的代码。反复打开部门表、反复采集字典的问题已解决。
见附件。
只有本站会员才能查看附件,请 登录

还有一个问题可能需要考虑,假如某笔记录需要删除,你的模型似乎没有考虑这个需求?
如果需要考虑这个需求,那么就要考虑权限问题了,部门表有没有权限去直接删除总表的记录?
建议:总表如果删除了某笔记录,可以去同步删除部门表的记录,但是部门表最好不要去直接删除总表的记录。
1