当前位置:
AIGC文章详情

离职那天,你跑了三年的宏成了没人敢碰的“遗留债”:VBA交接指南,没人教你的那些事

源自133位全网作者

04:22

最近刷到一条很有意思的知乎回答。有人问"VBA和python建议学哪个?",高赞答案没聊技术,说主管跟自己讲了一句话:就咱们单位这个数据量,用Python那是用大炮打蚯蚓,况且将来你不在这个位置了,谁还会啊?所以不如换成Excel公式。知乎

“将来你不在这个位置了,谁还会啊”——这句话精准戳中了VBA最隐蔽的成本:不是学不会、写不出,而是没人接得住

今年7月,B站有条视频叫《离职时随便删除工作文件违法哦,但可以拿走自己写的vba代码呀!》,播放量四千多,评论区23条吵得很凶。有人觉得删了也无所谓,反正只要下一个人知道Excel能写VBA,就算删掉也能让AI再写一份。哔哩哔哩马上有人反驳:那种几千行的代码,还有窗体的设计,就算有AI,没点VBA实力或者不花点时间别想整出来。

评论区吵的其实是一件事:VBA在你手里是资产,你走的那一刻,它可能直接变成负债。这篇就把这事说透——教程不教、AI博主也不教的部分。

为什么VBA的交接问题,比任何语言都严重

先说清楚,这不是VBA语言本身的锅,是它"低门槛"的必然结果。

VBA可能是全世界唯一"不需要学就能上手"的编程语言:录个宏、改两行、抄一段就能跑。但这也意味着,写它的人大多不是职业程序员,而是财务、人事、销售内勤、做品质台账的普通打工人,追求的是"把活干完",不是"把代码写好"。有篇知乎专栏总结得很狠:同样功能的实现,代码质量可能天差地别。知乎你的宏里写死了文件路径、写死了表名、写死了列号,还有一堆没注释的Range(“A17”),再加上写宏那位前辈的独家习惯——他一走,这堆东西就躺在共享文件夹里,成了没人敢拆的盲盒。

其次,VBA生态天然缺几样东西:没有版本管理、没有代码评审、没有文档惯例。Python代码好歹能进仓库看到修改记录,VBA是锁在.xlsm文件里的,它唯一的"版本历史",就是那位同事的电脑桌面。

离职那天,你跑了三年的宏成了没人敢碰的“遗留债”:VBA交接指南,没人教你的那些事

还有一个这两年的新变量。今年开春以来,“AI写VBA”"语音编程"类内容在B站、小红书批量出现,单条播放几万到九万多的不少。AI生成代码只要10秒,代价是:代码产出快了十倍,"没人看得懂"积累得也快了十倍。知乎有篇文章的描述很扎心:线上出了bug,接手的人只能硬着头皮啃AI合入的陌生代码,翻来覆去调prompt喂给模型排查。知乎这事在程序员圈是热议话题,在Excel世界里只是更隐蔽地发生着,因为大多数宏连"有人看一眼"的待遇都没有。

离职那天,你跑了三年的宏成了没人敢碰的“遗留债”:VBA交接指南,没人教你的那些事

先分级,再谈交接:不是所有宏都值得正式交接

很多人一听"交接"就想补文档,先别急。交接也有成本,第一步是分级:

第一类:一次性脚本。为某次对账、某个临时项目写的,百来行以内,跑完这辈子不会再跑。这类不用交接,留好原始数据和最终结果就行——将来谁有类似需求,让AI重写一份,比接手你的代码快。

第二类:定期工具。每周每月的固定报表、对账单、多文件汇总。这是交接的主战场。目标不是让人读懂代码,而是让人不依赖你也能跑起来、报错了知道查哪里

第三类:部门级系统。带窗体、多模块、上千行,甚至接了数据库。说句实话,这类别指望"交接"能解决,要么安排正式接手人并给他留学习时间,要么借换人的机会评估换路线——Power Query、Python脚本,或者干脆上正式系统。一个上千行的VBA"一人系统",本质是拿一个人的在职时长做抵押。

离职那天,你跑了三年的宏成了没人敢碰的“遗留债”:VBA交接指南,没人教你的那些事

你是要走的那个:离职前做5件事,花半天就够

如果你的宏属于第二、三类,走之前花半天做这几件事,前同事会念你的好:

1. 补注释,写"为什么"而不是"是什么"。"循环每一行"这种不用写,谁都看得懂。要写的是:为什么以第三张表为准、为什么这一列要特殊处理。当年你那些"将就"出来的逻辑,不写下来,接手的人只能对着屏幕拜一拜。

2. 把所有会变的东西集中到一处。文件路径、表名、列号、阈值,要么做成表内"配置"表,要么全部堆在代码开头的常量里。别让接手的人在五百行代码里全文搜索,找哪一行改了路径。

3. 写一页"说明书",放在文件里显眼的地方。至少包含四件事:输入是什么、输出是什么、多久跑一次、常见报错怎么恢复——比如"看到下标越界,先检查源表是不是换列了"。交接文档里最管用的往往不是代码注释,是这份"急诊指南"。

4. 原始数据和输出结果分开存。保证接手的人搞砸了能重跑,而不是只留一份最终结果。很多跑了好几年的宏,死因就是"没人知道数据是从哪来的"。

5. 别给VBA工程加密码。这个听起来反直觉:VBAProject密码拦住的主要是接手的同事,而它真正的防护力约等于零,绕过它的教程网上到处都是。真想防代码外流,靠的是和公司约定清楚,不是靠一个让继任者寸步难行的密码。

你是接手的那个:先别碰代码,按4步走

接到前任留下的"盲盒",正确的打开姿势是这样:

第一步:先备份两份。一份原始件永远不动,一份随便折腾。这是铁律。接宏最怕的不是看不懂,是"我改了一下,它不跑了,还回不去了"。

第二步:找入口,而不是读代码。Alt+F11打开VBA编辑器,先看左边工程窗口里有几个模块;再回表格里找按钮和控件,看它们各自绑定了哪个宏。从入口顺藤摸瓜,比从第一行开始读高效得多。另外记得检查有没有Workbook_Open之类的自动运行代码——很多"灵异现象"其实是它干的。

第三步:F8逐句跑一遍,看不懂就交给AI。选中代码按F8逐句执行,看着表格里的数据跟着变,七成逻辑就能摸清。这里有个时代红利:实在看不懂的段落,直接贴给大模型让它逐行解释。但记住一条——AI解释"这段代码在做什么"很在行,判断"这段代码在你的业务里对不对"它没有立场。涉及金额、日期、对账口径的逻辑,必须自己拿真实数据核对。

第四步:碰钱和日期之前,先查两个雷。

  • VBA的Round()不是四舍五入,是"银行家舍入":Round(2.5)=2,Round(1.5)=2;而工作表的ROUND(2.5,0)=3。小红书平时看不出来,财务对账时可能差出一分钱。发现前任的宏"金额总对不上",先怀疑这里。

  • 文件如果是邮件传来、外部拷来的,Office默认会拦截里面的宏。打开发现"按钮全不工作",先右键文件→属性,看有没有"解除锁定"的选项。近年新版Office对互联网来源的文件会打上网络来源标记,默认屏蔽所有VBA宏,哪怕点了"启用内容"也会被拦。知乎这不是文件坏了,是安全策略。

离职那天,你跑了三年的宏成了没人敢碰的“遗留债”:VBA交接指南,没人教你的那些事

最后说个别扭但绕不开的话题:代码到底归谁

B站那条视频的评论区为这事吵了很久。给一个相对稳的说法:工作时间、为工作任务、用公司数据写的宏,一般会被认定为职务成果,归属公司。哔哩哔哩走之前删掉是有风险的,擅自删除工作文件本身可能带来法律麻烦。但你积累的方法论、通用工具函数、踩坑经验,这些长在你脑子里的东西谁也拿不走——所以从第一天起就把"公司文件"和"个人工具箱"分开存,到时候就不纠结。

顺便说一句给还在岗位上的人:别把"这活儿只有我会"当舒适区。你用不可替代换来的安全感,反面是被绑在这个岗位上。真正稳的姿势是:写的时候就把交接写进去——要么代码好接,要么你走的时候敢说"这东西没我也转"。

VBA活了33年,靠的不是技术先进,而是它解决了办公软件官方永远不会帮你做的个性化需求。知乎但一个宏能不能再活三年,跟代码本身关系不大,跟有没有人接得住关系很大。

如果你部门的宏已经到了"没人敢动"的状态,别等下一次人事变动。今天就把备份做了、一页说明补上——这是最便宜的一份保险。

内容由AI生成
0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章