EP03. “Err Object Err 对象”
🔒 登录后可标记已读- EP02 的错误提示只能说「哪个单元格出错」,说不出「错在哪里」——
Err对象能把这块补上 - VBA 出错的瞬间会自动帮你填好
Err.Number(错误代号)和Err.Description(错误说明),直接拿来用 - 搭配
Select Case判断代号,就能针对负数、文字这些不同情况给出不同提示,不用只会说一句「出错了」 - 前置知识:EP02 的
On Error GoTo用法
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
用 Err.Number / Err.Description 显示详细信息
Dim rng As Range, cell As Range
Set rng = Selection
For Each cell In rng
On Error GoTo InvalidValue:
cell.Value = Sqr(cell.Value)
Next cell
Exit Sub
InvalidValue:
MsgBox Err.Number & " " & Err.Description & " at cell " & cell.Address
Resume Next
出错时会显示错误代号、错误说明文字、以及是哪个单元格出错,比单纯写死一句提示更精确。
用 Select Case 针对不同错误代号给不同提示
InvalidValue:
Select Case Err.Number
Case Is = 5
MsgBox "Can't calculate square root of negative number at cell " & cell.Address
Case Is = 13
MsgBox "Can't calculate square root of text at cell " & cell.Address
End Select
Resume Next
错误代号 5(Invalid procedure call)代表负数开根号,13(Type mismatch)代表文字开根号,针对不同情况给出更友善的提示文字。
学完你会
- ✅ 用
Err.Number和Err.Description显示更详细的错误信息 - ✅ 用
Select Case针对不同错误代号,给出更精确的提示文字 - ✅ 记得
Err对象的内容只在错误发生当下有效,要用就趁早用
常见错误
- 只用一句固定的错误提示,不管什么错误都显示同一句话,使用者不知道具体问题出在哪
- 用 Select Case 判断错误代号时,代号写错或漏了某个常见错误类型,导致提示信息不准确
- 忘记
Err对象的内容只在错误发生「当下」有效,之后的代码如果又执行了别的操作,Err的内容可能已经被覆盖
Sources
Blog / Website: