乐于分享
好东西不私藏

“手搓代码”还是“AI代工”?

“手搓代码”还是“AI代工”?

立即添加星标

每天学好教程

对于VBA开发者——尤其是靠Excel+Access+VBA吃饭的办公自动化、数据分析、财务建模人群——“AI编程”和“纯手搓”并不是非黑即白的选择,而是两种能力、两种节奏、两种风险偏好。

猜您喜欢
往期精选▼

Excel VBA也能办大事:ERP系统之业务逻辑

Excel VBA也能办大事:ERP系统之菜单结构

Excel VBA也能办大事:ERP系统之窗体设计

Excel VBA也能办大事:ERP系统之权限控制

Excel VBA也能办大事:ERP系统之语种控制

一、纯手搓VBA:老派、可控、但慢

1. 完全掌控每一行代码

手写VBA时,你知道变量为什么叫rng,为什么用For Each而不是For i,为什么加上On Error GoTo。这种掌控感在调试复杂业务逻辑时至关重要——尤其是处理Excel单元格循环、数组批量操作、字典去重这些VBA经典场景。

2. 不会出现“AI幻觉”式错误

AI写的VBA代码可能看起来很完整,但它会用错WorksheetFunction、把Range和Cells混出逻辑漏洞,甚至编造一个不存在的Workbook.OpenEx方法。手搓代码至少不会凭空捏造API。

3. 深度理解VBA的古怪之处

VBA是一门“复古”语言:

  • 数组下标默认从0或1取决于Option Base

  • Range.Value和Range.Value2区别微妙

  • Collection和Dictionary各有坑点

这些细节,AI不一定真懂,但手搓开发者被坑过一次就记住了。

4. 代码风格一致,易于长期维护

团队内部或自己维护多年的VBA项目,命名规范、错误处理模式、注释风格都需要统一。手搓能保证“人味”的一致,而不是每次生成的代码像不同实习生写的。

5.慢:写一个带模糊匹配的用户窗体、一个多条件筛选的数组算法,可能要半天。

6.知识孤岛:VBA生态相对封闭,手搓很难快速借鉴其他语言(Python、C#)的优秀模式。

7.容易疲劳:重复写Set ws = ThisWorkbook.Worksheets(“Sheet1”)这种样板代码,消耗热情。

二、AI辅助VBA编程:快、但有门槛

目前主流方式不是“让AI全自动开发”,而是Copilot式协作:ChatGPT、Copilot、通义灵码等生成VBA代码片段,开发者审阅、修改、集成。

1. 极大缩短“从0到1”的时间

例如:

“写一个VBA函数,合并当前工作簿下所有工作表的A:D列,去重后放到新表。”

手搓15–30分钟,AI 15秒生成骨架代码,你只需修正边界条件(如标题行处理、空表跳过)。

2. 降低陌生技术栈的接入成本

VBA开发者不常写正则、不常用JSON解析、不熟Windows API调用。AI可以直接给出:

  • 用CreateObject(“VBScript.RegExp”)做正则匹配

  • 解析HTTP请求返回的JSON(引入ScriptControl或调用MSXML2)

  • 调用Shell执行外部程序

  • AI帮你跨过“我连函数名都不知道”的黑暗时刻。

3. 自动生成注释和错误处理

好的AI提示能要求它:加上Option Explicit、添加错误跳转、按匈牙利命名法写变量名。至少,它不会比新手写得更差。

4. 辅助重构和解释遗留代码

接手一个20年前的VBA项目,看到ActiveCell.Offset(1,0).Select满屏飞,让AI解释并改写为直接Range操作,是真实可用的能力。

5. VBA不是AI的优先优化语言

大模型训练数据里,Python、JS、Java的占比远高于VBA。AI经常会给出:

  • 运行时效率极低的单元格循环(不懂VBA里数组+批量赋值的精髓)

  • 混淆.Text和.Value

  • 错误使用Select和Activate,让代码又慢又脆

6. 容易生成“看起来对,实际错”的代码

AI写的VBA很可能编译通过,但:

  • 内存泄露(对象未置Nothing)

  • 事件循环触发

  • 区域计算未关闭ScreenUpdating和Calculation

这些问题如果不仔细审查,上线后Excel直接卡死或算错数,比编译错误更可怕。

7. 你不会真正内化知识

长期依赖AI写VBA,会导致:

  • 离开AI后手写能力退化

  • 遇到复杂逻辑(递归遍历文件夹、自定义类模块)无法独立设计

8. 安全和合规风险

财务、审计、医疗行业的VBA宏本身就很敏感。把公司业务逻辑贴给AI训练,或直接运行AI生成的未经审计的代码,可能引发数据泄露或流程事故。

三、VBA开发者视角

四、给VBA开发者的三条务实建议

1. 不要“完全手搓”,也不要“无脑AI”

复杂算法、核心财务逻辑 → 手搓为主,AI辅助检查边界条件。

界面代码、数据清洗、临时分析脚本 → AI生成 + 人工改造。

2. 把AI当成“会写VBA但不太靠谱的实习生”

你必须做到:

  • 能看出AI代码里Select多余

  • 能手动改成Range直接赋值

  • 知道什么时候加DoEvents和Application.Volatile

3. 建立自己的VBA代码安全审查清单

AI生成的代码合入前,强制检查:

  • 有无关闭ScreenUpdating/EnableEvents/Calculation

  • 对象是否释放(尤其是CreateObject的外部组件)

  • 是否依赖ActiveSheet/Selection

  • 错误处理是否覆盖文件打开、工作表缺失等场景

对于VBA开发者来说,“手搓”不是情怀,而是底牌;“AI”不是威胁,而是杠杆。

VBA这个生态特殊在:它的用户大多是业务专家(财务、运营、数据分析师),而非全职程序员。对他们而言,AI编程的最大价值不是写出完美代码,而是降低从“我有需求”到“跑出结果”之间的摩擦。

但如果你彻底放弃手搓,你也就放弃了理解VBA运行机制的能力——而这是你在AI出错时,唯一能救火的东西。

最好的VBA开发者,不是“AI派”或“手搓派”,而是手搓过足够多的坑,又懂得让AI去填坑的那类人。

猜您喜欢
往期精选▼

VBA工具合集,复杂工作一键搞定,让同事目瞪口呆的Excel自动化

一键搞定!VBA自动化工具合集

一键全自动!基于Excel VBA的智能工具集,90%工作秒级完成

精选VBA工具合集,从此告别手工操作

数据为刃,玉麟擒牛—玉麒麟智选系统详细介绍

单据模板库:一键拿来,3秒搞定所有格式!

识别二维码

关注视频号

Excel

加油站

成为会员,享一对一服务

长按

关注

立即添加星标

每天学好教程