每天重复同一套格式调整、打印设置、复制粘贴,想先让 Excel 帮你做一遍。录制宏不需要会写代码,Excel 会把操作翻译成 VBA;但录制出来的代码通常很啰嗦,只适合做起点,不适合直接长期使用。
.xlsx 保存时会丢掉所有宏。Ctrl+Shift+字母)、保存位置:
PERSONAL.XLSB。录制时尽量只做必要操作:少点选、少滚动、少用鼠标右键菜单。录制结束后打开“开发工具 → 宏 → 编辑”,会看到生成的 VBA。
Alt+F11 打开 VBA 编辑器;F5 运行整个过程,F8 单步执行;录制出来的代码经常长这样:
Sub FormatReport()
Range("A1:D1").Select
Selection.Font.Bold = True
Selection.Interior.Color = RGB(220, 230, 241)
End Sub
Select 和 Selection 依赖当前选中的工作表、当前活动区域,换一张表或换一个文件就可能出错。可以改成:
Sub FormatReport()
With ThisWorkbook.Worksheets("报表").Range("A1:D1")
.Font.Bold = True
.Interior.Color = RGB(220, 230, 241)
End With
End Sub
清理原则:
ThisWorkbook 明确工作簿,不要依赖 ActiveWorkbook;Worksheets("报表") 明确工作表,不要依赖 ActiveSheet;With 减少重复对象引用;.Select 和 Selection;.xlsm 会被标记为“来自 Internet”,打开时可能被阻止;在文件属性里“解除锁定”,或把文件放到受信任位置。.xlsm。Ctrl+Shift+字母 可能和 Excel 自带快捷键或其他宏冲突;绑定按钮更稳。ActiveSheet 的切换,回放时容易操作错表;清理时明确工作表。PERSONAL.XLSB 是隐藏文件,修改后要保存;换电脑不会自动带走。Declare 语句在 64 位 Office 上要加 PtrSafe,否则编译报错。合上页面,先回答,再展开对照。
.xlsx 后消失了?Selection 为什么容易出错?.xlsx 不支持宏,保存时会丢弃 VBA 项目;要保存为 .xlsm。Selection 依赖当前选中的区域和工作表,换表或换文件后可能操作错位置。PERSONAL.XLSB,对所有工作簿可用,但不会随文件自动分发。
小程序版
微信扫码,随时查命令