You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CVErr函数错误处理问题:自定义错误2001无法返回的修复求助

修复VBA自定义错误返回问题

你的代码中使用CVErr(2001)返回的是Excel内置错误(对应“取消操作”错误),并非真正的自定义错误。VBA规定,用户自定义错误编号必须基于vbObjectError(值为-2147221504),且需要加上一个大于等于512的偏移量(避免与系统内置错误冲突)。

修改后的函数代码

Function CalculateDouble(Number)
    If IsNumeric(Number) Then
        CalculateDouble = Number * 2    ' 返回计算结果
    Else
        ' 使用vbObjectError + 自定义编号(示例用1001,可自行调整)
        CalculateDouble = CVErr(vbObjectError + 1001)
    End If
End Function

关键说明

  • 自定义错误编号推荐从vbObjectError + 512开始,比如vbObjectError + 1001、vbObjectError + 2000等,只要不重复即可。
  • 如果需要在VBA代码中捕获并识别这个自定义错误,可以在调用函数的过程中添加错误处理:
    Sub TestCalculateDouble()
        Dim result As Variant
        
        On Error Resume Next
        result = CalculateDouble("非数字")
        
        If Err.Number <> 0 Then
            ' 判断是否是自定义错误
            If Err.Number = vbObjectError + 1001 Then
                MsgBox "自定义错误:输入不是有效数字", vbCritical
            Else
                MsgBox "其他错误:" & Err.Description, vbExclamation
            End If
            Err.Clear
        End If
    End Sub
    
  • 若在Excel单元格中直接使用该函数,单元格会显示#VALUE!,但通过VBA错误处理逻辑可以明确识别这是你定义的自定义错误类型。

内容的提问来源于stack exchange,提问作者Andrei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:13:10