Excel精英培训网

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

[已解决]Raise 方法与Error 语句等效吗?

[复制链接]
发表于 2011-1-31 10:14 | 显示全部楼层 |阅读模式

  1. Sub a()
  2.     Err.Raise 7
  3. End Sub

  4. Sub b()
  5.     Error 7
  6. End Sub
复制代码

虽然从结果看一样,但不知道实际上它们是否等效?
请问如题,谢谢!
最佳答案
2011-1-31 13:30
Raise和Error都能模拟错误的发生,引起Err对象的变化(Number变化)。

用Raise发生错误,用户可以自定义一个号码作为错误编号传递给Err对象。
Error只能模拟系统中已经定义好的错误的发生。而自定义错误号是系统内没有的,所以当Error一个系统中没有定义的错误号时,这句句子本身就发生了错误,而并非是这句句子模拟错误的发生。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-1-31 10:39 | 显示全部楼层
error 只能产生系统已经存在的错误。
raise可以自定义错误号
你改变一下数字看看
  1. Sub a()
  2.     On Error Resume Next
  3.     Err.Raise vbObjectError + 123
  4.     Debug.Print Err.Number
  5. End Sub

  6. Sub b()
  7.     On Error Resume Next
  8.     Error vbObjectError + 123
  9.     Debug.Print Err.Number
  10. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-1-31 11:57 | 显示全部楼层
谢谢阿木!

vbObjectError的含义是啥?

msgbox vbObjectError    '返回-2147221504

所以vbObjectError表示一个常量,对么?
回复

使用道具 举报

发表于 2011-1-31 12:21 | 显示全部楼层
Number 必需的。Long整数,识别错误性质。Visual Basic 错误(既有 Visual Basic 定义的错误也有用户定义的错误)的范围在 0–65535 之间。从 0–512 的范围保留为系统错误;从 513–65535 的范围可以用做用户定义的错误。当在类模块中将 Number 属性设置成自己的错误代码时,可将错误代码号添加到 vbObjectError 常数上。例如,为了产生错误号 513,可将 vbObjectError + 513 赋值到 Number 属性。
回复

使用道具 举报

 楼主| 发表于 2011-1-31 13:22 | 显示全部楼层

  1. Sub a()
  2.     On Error Resume Next
  3.     Err.Raise vbObjectError + 1
  4.     Debug.Print Err.Number    '返回-2147221503
  5. End Sub

  6. Sub b()
  7.     On Error Resume Next
  8.     Error vbObjectError + 1
  9.     Debug.Print Err.Number    '返回5
  10. End Sub

  11. Sub c()
  12.     Debug.Print vbObjectError    '返回-2147221504
  13. End Sub
复制代码
对于过程a,error语句的帮助:“如果不存在错误处理程序,或未做任何启动动作,那么就会由 Err 对象属性发布一个错误信息并将错误信息显示出来。”是不是说,不存在错误号"-2147221503"。所以过程a只是将错误信息显示出来

对于过程b,为什么返回5呢?

还是没明白{:09:}
回复

使用道具 举报

发表于 2011-1-31 13:25 | 显示全部楼层
一起来学习!
回复

使用道具 举报

发表于 2011-1-31 13:30 | 显示全部楼层    本楼为最佳答案   
Raise和Error都能模拟错误的发生,引起Err对象的变化(Number变化)。

用Raise发生错误,用户可以自定义一个号码作为错误编号传递给Err对象。
Error只能模拟系统中已经定义好的错误的发生。而自定义错误号是系统内没有的,所以当Error一个系统中没有定义的错误号时,这句句子本身就发生了错误,而并非是这句句子模拟错误的发生。
回复

使用道具 举报

 楼主| 发表于 2011-1-31 14:33 | 显示全部楼层
学习7楼{:25:}
回复

使用道具 举报

发表于 2011-1-31 15:30 | 显示全部楼层
比较深奥,看看帖子学习学习
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 03:12 , Processed in 0.401800 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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