EXCEL和VBA各种错误的含义,和不同的判断函数

69 篇文章 20 订阅

1EXCEL的各种报错

  • #N/A            NA=Not Available,找不到(无法得到想要得结果)
  1. 这个错误通常表示找不到要求查找的内容
  2. 一般是查找函数查不到结果就报这个,函数没法返回可用数值
  3. 比如用 vlookup()  match()等查找得函数容易报这样得错
  • #DIV/0!         除以0报错,或者除数引用的是空白内容/空白单元格

  • #NAME?       输入得函数名不认识,或者基本语法错误?
  1.  函数名写错, sum(1+2) 写成  sam(1+2)     
  2. 不认识,不存在得函数名,自定义函数名,名称等等   
  3.  版本导致得函数识别出错?      
  4. 不合理的数据类型混用报错,比如数值和字符串计算等等,比如 =1+a=#NAME? 

  • #NUM!         数值计算结果错误!数字,数学上的一些问题
  1. 不是整数  / 数值溢出,比如=10^2000=#NUM! 
  2.  负数不能开方,SQRT(-10)

  • #REF!           引用无效,公式失效!
  1. 例如引用的地方被删除

  • #VALUE!       计算过程错误导致,无法返回正常结果!
  1. 比如 1+a=#VALUE!     
  2. 比如  1+!!!333=#VALUE!     

  • #NULL!          为空
  1. 空格,可以是 EXCEL交集运算符
  2. =G16:G18 G18:G20=G18得内容
  3. 如果两者没有交集会返回空!
  4. SUM(G10:G12 I10:I12) = #NULL! 或 G10:G12 I10:I12 = #NULL! 

  • ######       显示不全,一般拉宽可解决

2 EXCEL的各种错误处理函数

  • isna()         判断是否  "找不到/查不到 结果"
  • isblank()   判断单元格是否为空
  • iserror()      判断是否报错,包含 NA 
  • iserr()         判断是否报错,但不包含 NA
  • iferror()    

可将单元格错误值插入单元格,或者用 CVErr 函数测试单元格的值是否为某个错误值。单元格错误值可为以下 XlCVError 常量之一。

常量错误号单元格错误值
xlErrDiv02007#DIV/0!
xlErrNA2042#N/A
xlErrName2029#NAME?
xlErrNull2000#NULL!
xlErrNum2036#NUM!
xlErrRef2023#REF!
xlErrValue2015#VALUE!

这段是网上找的例子,不是我写的

[求助]如何附值错误和判断错误?-Excel VBA程序开发-ExcelHome技术论坛 -

Worksheets("Sheet1").Activate
If IsError(ActiveCell.Value) Then
    errval = ActiveCell.Value
    Select Case errval
        Case CVErr(xlErrDiv0)
            MsgBox "#DIV/0! error"
        Case CVErr(xlErrNA)
            MsgBox "#N/A error"
        Case CVErr(xlErrName)
            MsgBox "#NAME? error"
        Case CVErr(xlErrNull)
            MsgBox "#NULL! error"
        Case CVErr(xlErrNum)
            MsgBox "#NUM! error"
        Case CVErr(xlErrRef)
            MsgBox "#REF! error"
        Case CVErr(xlErrValue)
            MsgBox "#VALUE! error"
        Case Else
            MsgBox "This should never happen!!"
    End Select
End If

3VBA的各种报错

  • 语法错误
  • 编译错误
  • 运行错误
  • 逻辑错误    代码语法没错,但是运行逻辑有错,解决不了问题/返回了错误结果

4 VBA的各种错误处理函数

第1类

  • worksheetfunction.iserror()
  • worksheetfunction.isblank()
  • 等等工作表函数

第2类

  • application.iserror()
  • 等等应用内置函数

第3类 VBA该函数

  • iserror()            '判断是否为 错误值
  • isempty()          '判断是否为空,但是注意 ""不是空!是空白字符串!
  • len()=0              '判断是否为  空/错误 等,反正len() 都=0
  • 用 on error goto  错误处理语句处理
  • on error goto  line1:
  • line1: "这个是XX错误"
  • on error resume next
  • 变量 typename()
  •  if Cells(i, "A").Text = "#N/A"    ’居然这样也行的!!   

Sub t1()

    On Error Resume Next
    a2 = 1 / 0           '本身会报错,有前面语句加持,相当于a2未被赋值
    a3 = ""
    
    Debug.Print IsError(a1)
    Debug.Print IsError(a2)
    Debug.Print IsError(a3)
    Debug.Print
    
    Debug.Print IsEmpty(a1)
    Debug.Print IsEmpty(a2)
    Debug.Print IsEmpty(a3)
    Debug.Print
    
    Debug.Print Len(a1)
    Debug.Print Len(a2)
    Debug.Print Len(a3)
    Debug.Print

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值