常见运行时错误代码(收藏级完整版)
错误 代码 | 错误描述 | 常见原因 | 快速解决方案 |
3 | 无GoSub返回 | 执行Return语句但未执行GoSub | 检查GoSub/Return配对使用 |
5 | 无效的过程调用 | 参数超出允许范围 | 检查参数值是否有效 |
6 | 溢出 | 计算结果超出变量类型范围 | 使用更大的数据类型(如Long代替Integer) |
7 | 内存不足 | 系统资源耗尽 | 关闭不需要的程序,释放对象变量 |
9 | 下标越界 | 数组索引超出范围 | 使用LBound和UBound检查数组边界 |
10 | 此数组为固定或暂时锁定 | 尝试重定义固定大小数组 | 使用ReDim重新定义数组大小 |
11 | 除数为零 | 数字除以0 | 添加除数是否为0的检查 |
13 | 类型不匹配 | 变量类型不兼容 | 使用CInt、CLng、CStr等类型转换函数 |
14 | 字符串空间不足 | 字符串操作超出内存 | 优化字符串处理,使用StringBuilder模式 |
17 | 无法执行请求操作 | 功能不可用 | 检查Excel版本兼容性 |
18 | 发生用户中断 | 用户按了Ctrl+Break | 添加错误处理或禁用中断 |
20 | 无错误恢复 | Resume无错误时执行 | 检查错误处理逻辑流程 |
28 | 堆栈空间不足 | 递归过程过深 | 优化递归,添加退出条件 |
35 | 未定义子程序、函数或属性 | 调用不存在的过程 | 检查过程名拼写和作用域 |
48 | 加载DLL错误 | DLL文件问题 | 检查DLL路径和版本兼容性 |
49 | DLL调用约定错误 | DLL参数传递错误 | 检查DLL函数声明 |
51 | 内部错误 | VBA引擎问题 | 重启Excel,检查加载项 |
52 | 错误的文件名或数目 | 文件操作参数错误 | 检查文件名和参数数量 |
53 | 文件未找到 | 指定文件不存在 | 使用Dir()函数检查文件是否存在 |
54 | 文件模式错误 | 文件打开模式不正确 | 检查Open语句的访问模式 |
55 | 文件已打开 | 重复打开文件 | 关闭已打开的文件句柄 |
57 | 设备I/O错误 | 硬件设备问题 | 检查磁盘空间和权限 |
58 | 文件已存在 | 创建已存在文件 | 使用Kill删除或重命名 |
59 | 记录长度错误 | 随机文件记录长度不匹配 | 检查Len参数设置 |
61 | 磁盘已满 | 磁盘空间不足 | 清理磁盘空间 |
62 | 输入超出文件尾 | 读取超过文件结尾 | 检查EOF()函数 |
63 | 记录号错误 | 记录号无效 | 检查记录号范围 |
67 | 文件过多 | 打开文件数超限 | 减少同时打开的文件数量 |
68 | 设备不可用 | 设备未准备好 | 检查设备连接和驱动 |
70 | 拒绝的权限 | 访问权限不足 | 以管理员身份运行或修改权限 |
71 | 磁盘未准备好 | 驱动器无磁盘 | 插入磁盘或检查驱动器 |
74 | 不能以不同的驱动重命名 | 跨驱动器重命名 | 先复制再删除原文件 |
75 | 路径/文件访问错误 | 路径或文件访问问题 | 检查文件是否被占用或只读 |
76 | 路径未找到 | 指定路径不存在 | 使用MkDir创建路径 |
91 | 未设置对象变量 | 对象变量为Nothing | 使用Set初始化对象变量 |
92 | For循环未初始化 | For循环控制变量问题 | 检查For循环语法 |
93 | 无效的模式字符串 | Like运算符模式错误 | 检查模式字符串语法 |
94 | Null的无效使用 | 不正确使用Null | 使用IsNull()函数检查 |
100 | 窗体已显示,不能显示为模式 | 窗体显示冲突 | 隐藏或卸载已显示窗体 |
321 | 无效的文件格式 | 文件格式不被支持 | 检查文件格式和扩展名 |
322 | 不能创建必要的临时文件 | 临时文件夹问题 | 清理临时文件夹或指定其他位置 |
340 | 控件数组元素不存在 | 控件索引无效 | 检查控件数组索引 |
341 | 无效的对象数组索引 | 对象数组索引错误 | 检查对象数组边界 |
360 | 对象已加载 | 重复加载对象 | 检查对象加载状态 |
361 | 不能加载或卸载该对象 | 对象加载/卸载问题 | 检查对象依赖关系 |
363 | 未找到指定的ActiveX控件 | 控件未注册或丢失 | 重新注册控件或修复安装 |
364 | 对象未卸载 | 对象未正确释放 | 确保所有对象都被卸载 |
380 | 无效的属性值 | 属性赋值无效 | 检查属性允许的值范围 |
381 | 无效的属性数组索引 | 属性数组索引错误 | 检查属性数组边界 |
382 | 运行阶段不能设置属性 | 属性只读 | 检查属性是否可在运行时设置 |
383 | 属性为只读 | 属性不可写 | 使用正确的属性赋值方法 |
385 | 需要属性数组索引 | 缺少必要的索引 | 为属性数组提供索引 |
387 | 不允许设置属性 | 属性设置被禁止 | 检查对象状态和权限 |
393 | 运行阶段不能读取属性 | 属性不可读 | 检查属性访问时机 |
394 | 属性为只写 | 属性不可读 | 使用其他方法获取信息 |
400 | 窗体已显示,不能显示为模式 | 同错误100 | 同错误100解决方案 |
422 | 找不到属性 | 属性不存在 | 检查属性名拼写和对象类型 |
423 | 找不到属性或方法 | 属性或方法不存在 | 检查对象类型和成员 |
424 | 需要对象 | 缺少对象引用 | 使用Set创建对象实例 |
429 | ActiveX部件不能创建对象 | 组件未注册或缺失 | 重新注册组件或修复安装 |
430 | 类不支持自动化 | 类无自动化接口 | 检查对象类型和兼容性 |
432 | 自动化操作时文件名或类名未找到 | 类名错误或未注册 | 检查ProgID和组件注册 |
438 | 对象不支持此属性或方法 | 对象无该成员 | 检查对象类型和IntelliSense提示 |
440 | 自动化错误 | 一般自动化错误 | 检查对象创建和调用参数 |
442 | 远程进程到类型库或对象库的连接丢失 | 类型库连接断开 | 重新引用库或重启Excel |
443 | 自动化对象无默认值 | 对象无默认属性 | 显式指定属性名 |
445 | 对象不支持此操作 | 操作不被允许 | 检查对象状态和权限 |
446 | 对象不支持命名参数 | 不支持参数名调用 | 使用位置参数调用 |
447 | 对象不支持当前区域设置 | 区域设置不兼容 | 检查系统区域设置 |
448 | 未找到命名参数 | 参数名错误 | 检查参数名拼写 |
449 | 参数不可选 | 缺少必需参数 | 提供所有必需参数 |
450 | 错误的参数数目或无效的属性赋值 | 参数数量错误 | 检查过程声明和调用 |
451 | 对象不是集合 | 无效的集合操作 | 检查对象是否为集合 |
452 | 无效的顺序 | 集合顺序无效 | 检查集合索引 |
453 | 未找到指定的DLL函数 | DLL函数不存在 | 检查DLL导出函数名 |
454 | 未找到代码资源 | 资源未找到 | 检查资源文件和引用 |
455 | 代码资源锁定错误 | 资源锁定冲突 | 关闭冲突的程序 |
457 | 此键已与集合的一个元素关联 | 重复键值 | 使用唯一键值 |
458 | 变量使用了一个VBA不支持的自动化类型 | 类型不被支持 | 使用兼容的数据类型 |
459 | 对象或类不支持事件集 | 对象无事件 | 检查对象事件支持 |
460 | 无效的剪贴板格式 | 剪贴板格式错误 | 检查数据格式兼容性 |
461 | 未找到方法或数据成员 | 成员不存在 | 检查对象模型文档 |
462 | 远程服务器不存在或不可用 | 服务器连接失败 | 检查网络和服务器状态 |
463 | 未在本地机器上注册类 | 类未注册 | 注册组件或使用CreateObject |
480 | 不能创建AutoRedraw图像 | 图像创建失败 | 检查内存和显示设置 |
481 | 无效的图片 | 图片格式无效 | 检查图片文件和格式 |
482 | 打印机错误 | 打印机问题 | 检查打印机状态和驱动 |
735 | 不能将文件保存至TEMP目录 | 临时文件夹问题 | 指定其他保存路径 |
744 | 找不到要搜索的文本 | 搜索文本不存在 | 检查搜索内容和范围 |
746 | 替换文本太长 | 替换文本超限 | 缩短替换文本 |
1004 | 应用程序定义或对象定义错误 | Excel对象操作失败 | 检查对象引用和权限 |
1005 | 文件访问被拒绝 | 文件权限不足 | 检查文件权限和占用 |
1006 | 磁盘空间不足 | 同错误61 | 同错误61解决方案 |
使用技巧速查
错误处理代码模板
Sub 通用错误处理示例() On Error GoTo ErrHandler ' 你的代码在这里 Exit Sub ErrHandler: Select Case Err.Number Case 9: MsgBox "数组越界,请检查索引值" Case 11: MsgBox "除零错误,请检查计算公式" Case 13: MsgBox "类型不匹配,请检查变量类型" Case 53, 76: MsgBox "文件路径错误:" & Err.Description Case 91: MsgBox "对象未初始化,请使用Set语句" Case 1004: MsgBox "Excel操作失败:" & Err.Description Case Else: MsgBox "错误 " & Err.Number & ": " & Err.Description End Select ' 可选:记录错误日志 Debug.Print "错误时间:" & Now() Debug.Print "错误号:" & Err.Number Debug.Print "错误描述:" & Err.DescriptionEnd Sub快速调试技巧
- 立即窗口查看错误:按Ctrl+G,输入?Err.Number和?Err.Description
- 错误定位:使用F8单步执行,找到出错行
- 错误预防:重要操作前添加验证代码
实用建议
- 打印本表:贴在办公桌前,随时查阅
- 常见错误优先记忆:重点掌握9、13、91、1004等高频错误
- 建立个人错误库:记录自己常犯的错误和解决方案
觉得有用?
- 点赞收藏,需要时快速找到
- ➕ 关注我,获取更多VBA实用技巧
- 分享给同事,提升整个团队效率
在评论区分享:你遇到过最棘手的VBA错误是什么?如何解决的?
#VBA调试 #Excel技巧 #错误处理 #编程速查 #办公自动化
