——来自一位被“列宽 2cm”折磨到秃头的 VBA 老炮儿
开场 3 秒抓马
老板:报表里怎么全是“teh”?
我(面不改色):哦,那是 Excel 在练绕口令。
老板:绕到客户那里就凉了!
我:别急,让 VBA 把 AutoCorrect 拎出来打一顿,5 秒全员闭嘴。
1. AutoCorrect 是啥?
官方说法:自动更正。
人话:Excel 的“嘴瓢急救队”。
你打“teh”,它秒变“the”;你打“(c)”,它秒变“©”。
但如果你写 VBA,它还能变身“自定义杠精”——指哪打哪,指“老板”打“小可爱”。
2. 为什么要在 VBA 里动它?
理由一:手动设置?太 low,还被同事偷窥。
理由二:换电脑就清零,像爱情一样脆弱。
理由三:VBA 一键部署,老板夸你“秒级响应”,其实你在工位偷吃辣条。
3. 对象结构“三兄弟”
Application.AutoCorrect '老大,总指挥
Application.AutoCorrect.Entries '老二,词条集合,管“字典”
Application.AutoCorrect.ReplaceText '老三,开关,True=开,False=罢工
4. 常用操作,一张表秒懂
5. 实战:30 行代码,把“渣男词汇”一键洗白
需求:
公司文档里常年把“客户”写成“客护”“客尸”“客屎”……
目标:只要打出以上三种,立刻替换成“金主爸爸”。
Sub 洗白渣男词汇()
Dim 渣男列表 As Variant, i As Long
渣男列表 = Array("客护", "客尸", "客屎")
Application.AutoCorrect.ReplaceText = True '先开闸
For i = LBound(渣男列表) To UBound(渣男列表)
On Error Resume Next
AutoCorrect.Entries(渣男列表(i)).Delete '先删旧账
On Error GoTo 0
AutoCorrect.Entries.Add 渣男列表(i), "金主爸爸"
Next i
MsgBox "已修复 " & i & " 个渣男词汇,金主爸爸表示欣慰!", vbInformation
End Sub
运行效果:
你在单元格里刚打完“客尸”,一按回车——“金主爸爸”闪亮登场,仿佛 Excel 给你比了个心。
6. 彩蛋:让 AutoCorrect 当“内鬼”
愚人节特供版:把“你好”改成“我秃了”。
AutoCorrect.Entries.Add "你好", "我秃了"
全公司群发报表后,坐等 HR 小姐姐端着植发广告来找你。
(记得 4 月 2 号 Delete 掉,否则真秃。)
7. 踩坑指南,不看活该加班
大小写敏感?不敏感!TeH 也能被“the”收编。
只在当前应用生效,Word 的 AutoCorrect 是另一个宇宙。
词条上限约 64K,别拿它当网盘。
删除不存在的词条会报错,记得 On Error Resume Next 护体。
关闭 ReplaceText 后,所有词条冬眠,但数据还在,随时复活。
8. 一键“毁灭证据”
离职前想抹掉所有自定义?
Sub 毁灭证据()
Dim i As Long
For i = AutoCorrect.Entries.Count To 1 Step -1
AutoCorrect.Entries(i).Delete
Next i
MsgBox "已清空,祝贵司永远找不到‘客屎’!", vbExclamation
End Sub
(注:请谨慎使用,否则下次你回公司修 Bug,发现全是“teh”)
9. 结语:把知识装进口袋,把辣条留给明天
AutoCorrect 就像一把指甲刀:
用得好,优雅到飞起;
用不好,剪到肉出血。
把它交给 VBA,你就从“手抖星人”升级为“Excel 嘴替”。
——本文结束,如果你连“teh”都没改过来,那就把代码再抄一遍,
毕竟,“金主爸爸”不会等你,但 AutoCorrect 会。