Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5568|回复: 11

[VBA] 005-获得错误的详细说明-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-1-10 14:22 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难5
如何获取VBA所有运行时错误的详细说明
VBA中的运行时错误罗列到工作表中,方便学习,而且可以查看详细说明。
è解决方案
要获取所有错误的编号及信息,可以利用Err对象的Raise方法人为制造错误,然后利用Err.Number取出错误编号,而用Err.Description属性返回错误信息。如果需要返回更详细的信息,则借用Err.HelpFile得到错误对应的帮助文件,以及 Err.HelpContext得到错误主题的ID号,最后用Application.Help方法可以根据错误ID号打开对应的帮助文件。
í操作方法
步骤1
按【Alt+F11】组合键打开VBE窗口。选择菜单“插入”→“模块”,并输入以下代码:

  1. Sub 获取所有错误类型编码及含义()  '人工造成错误并获取错误信息
  2.   On Error Resume Next  '错误时继续执行
  3.   Dim arr(), i As Integer
  4.   ReDim arr(1 To 1000, 1 To 2)  '声明一个二维数组,1000行2列
  5.   Range("A1:B1") = Array("错误ID", "错误描述(单击查看详细描述)")  '标题赋值
  6.   Range("A1:B1").Interior.ColorIndex = 3  '添加背景色
  7.   VBA.Err.Raise 1   ' 故意产生运行时错误,方便后面的操作
  8.   Cells(2, 1) = 1        '错误编号
  9.   Cells(2, 2) = Err.Description  '错误类型
  10.   For i = 2 To 1000      '提取2到1000之间的错误类型
  11.     VBA.Err.Raise i    '产生一个编号为i的错误(其中有重复)
  12.     '如果其错误类型不和编号1相同则取其编号与错误描述
  13.     If Error(i) <> "应用程序定义或对象定义错误" Then
  14.       arr(i + 1, 1) = Err.Number  '将错误编号存入数组
  15.       arr(i + 1, 2) = Err.Description  '将错误描述存入数组
  16.     End If
  17.     Err.Clear  '清除错误,方便取下一个错误的相关信息
  18.   Next i
  19.   Range("A3:B1001") = arr  '将数组写入单元格
  20.   Columns("A:B").AutoFit  '自动调整列宽
  21.   '将A1:A1001中空单元格整行删除
  22.   Range("A1:A1001").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  23. End Sub
复制代码
步骤2
如果没有显示工程资源管理器则按【Ctrl+R】组合键打开工程资源管理器,双击当前工程中的“ThisWorkbook”,并在右边的代码窗口中输入以下代码:

  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  2. If Target.Column = 2 Then '仅在选择第二列时执行
  3. On Error Resume Next '防错
  4. Err.Raise Target(1).Offset(0, -1) '产生一个错误,错误号为A列的值
  5. Application.Help Err.HelpFile, Err.HelpContext '打开对应的帮助文件
  6. End If
  7. End Sub
复制代码

步骤3
双击工程资源管理器中的“模块1”,光标定位于过程“获取所有错误类型编码及含义”中任意位置,按【F5】键执行程序。
步骤4
关闭VBE窗口返回工作表界面,在A:B区域中已罗列出11000之间的运行时错误编号及错误描述,如
单击B4单元格,可以打开编号为A4单元格的错误信息的详细描述,如图。

=============================
上摘自《EXCEL2010编程与实践》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2011-1-10 14:23 | 显示全部楼层
这就是结果:
错误ID        错误描述(单击查看详细描述)
1        应用程序定义或对象定义错误
3        无 GoSub 返回
5        无效的过程调用或参数
6        溢出
7        内存溢出
9        下标越界
10        该数组被固定或暂时锁定
11        除数为零
13        类型不匹配
14        溢出串空间
16        表达式太复杂
17        不能执行所需的操作
18        出现用户中断
20        无错误恢复
28        溢出堆栈空间
35        子过程或函数未定义
47        DLL 应用程序客户太多
48        加载 DLL 错误
49        DLL 调用约定错误
51        内部错误
52        文件名或文件号错误
53        文件未找到
54        文件模式错误
55        文件已打开
57        设备 I/O 错误
58        文件已存在
59        记录长度错误
61        磁盘已满
62        输入超出文件尾
63        记录号错误
67        文件太多
68        设备不可用
70        拒绝的权限
71        磁盘未准备好
74        不能更名为不同的驱动器
75        路径/文件访问错误
76        路径未找到
91        对象变量或 With 块变量未设置
92        For 循环未初始化
93        无效的模式串
94        无效使用 Null
96        由于对象已经激活了事件接受器支持的最大数目的事件,不能吸收对象的事件
97        不能调用对象的友元函数,该对象不是所定义类的一个实例。
98        属性或方法调用不能包括对私有对象的引用,不论是作为参数还是作为返回值
321        无效文件格式
322        不能创建必要的临时文件
325        资源文件中格式无效
380        无效属性值
381        无效的属性数组索引
382        运行时不支持 Set
383        (只读属性)不支持 Set
385        需要属性数组索引
387        Set 不允许
393        运行时不支持 Get
394        (只写属性)不支持 Get
422        属性没有找到
423        属性或方法未找到
424        要求对象
429        ActiveX 部件不能创建对象
430        类不支持自动化 (Automation) 或不支持期待的接口
432        自动化 (Automation) 操作时文件名或类名未找到
438        对象不支持该属性或方法
440        自动化 (Automation) 错误
442        远程进程到类型库或对象库的连接丢失。 按下对话框的“确定”按钮取消引用。
443        Automation 对象无缺省值
445        对象不支持该动作
446        对象不支持命名参数
447        对象不支持当前的本地设置
448        未找到命名参数
449        参数不可选
450        错误的参数号或无效的属性赋值
451        property let  过程未定义,property get  过程未返回对象
452        无效的序号
453        指定的 DLL 函数未找到
454        代码资源未找到
455        代码资源锁定错误
457        该关键字已经与该集合的一个元素相关联
458        变量使用了一个 Visual Basic 不支持的自动化 (Automation) 类型
459        对象或类不支持的事件集
460        无效的剪贴板格式
461        方法和数据成员未找到
462        远程服务器不存在或不可用
463        类未在本地机器上注册
481        无效的图片
482        打印机错误
735        不能将文件保存到 TEMP
744        要搜索的文本没有找到
746        替换文本太长
回复

使用道具 举报

发表于 2011-1-10 14:25 | 显示全部楼层
回复

使用道具 举报

发表于 2011-1-15 17:57 | 显示全部楼层
谢谢小妖老师的分享了啊。。。
回复

使用道具 举报

发表于 2011-1-15 18:00 | 显示全部楼层
谢谢分享{:011:}
回复

使用道具 举报

发表于 2011-1-15 18:52 | 显示全部楼层
    谢谢。。,学习啦!!
回复

使用道具 举报

发表于 2011-1-15 20:22 | 显示全部楼层
真是好代码,再次回头来看看。
回复

使用道具 举报

发表于 2011-1-15 20:29 | 显示全部楼层
{:35:}{:35:}
回复

使用道具 举报

发表于 2011-4-9 21:33 | 显示全部楼层
{:011:}{:011:}{:011:}{:011:}
回复

使用道具 举报

发表于 2012-1-11 15:09 | 显示全部楼层
谢谢分享,刚看了罗老师的疑难千寻千解丛书
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-7 21:25 , Processed in 0.263225 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表