【问题标题】:VBA (Excel) - Get error number from a variable that became equal to an errorVBA(Excel)-从等于错误的变量中获取错误号
【发布时间】:2018-01-06 22:27:50
【问题描述】:

场景:

dim Result as variant
Result = Application.Match(string, Wb.Sheets("UD_Base").Range("UD_Base[U_ID]"), 0)

现在,如果我检查 -Result- 的值,它可以是数字或错误。: Debug.Print 结果 -> 1 Debug.Print 结果 -> 错误 2042


我可以用 IsError(result) 测试 -Result- ,它给出 True 或 False ...但即使 -Result- 是一个错误,我也无法得到它的编号。

Result.Number -> Object or Type 错误信息来了 所以看起来我不能像在 Err.Number

中那样使用它

如何获取-Result-变量的错误号? 在这种情况下 -Result- 真的等于什么?

如果我说如果结果 = ???那么......如果我知道它的错误 2042 什么时候会是真的? 我已经测试了案例“错误 2042”;案例错误;案例错误;案例错误(2042); ... 这些都没有显示 True for -Result- 当它 debug.printed Error 2042

请各位大侠赐教。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    Result 中的值属于Error 类型。因此,您需要将其与错误值进行比较。例如:

    Result = CVErr(2042)
    

    如果Result 包含该错误值,将返回True

    但是,为了运行测试,您首先必须测试Result 是否包含错误类型。如果不是,您将在比较语句中得到类型不匹配。

    您可以通过多种方式进行测试:

    IsError(Result)
    VarType(Result) = 10
    VarType(Result) = vbError
    TypeName(Result) = "Error"
    

    如果你需要提取特定的数字,你可以用类似的东西来做

    Mid(CStr(Result),7)
    

    将错误值转换为字符串。

    【讨论】:

    • 谢谢(感谢你们俩)。我有点“害怕”使用论坛,认为结果可能会在我需要答案的几天后出现。相反,我得到了立即的回应......所以我对论坛的信心增加了很多。! :) ;)
    • 简洁明了的问题的响应时间,考虑到本论坛的指南,通常会根据其复杂性得到快速响应。您将问题缩小到一个问题;发布了适当的代码并回答您的问题不需要比您在原始问题中发布的更多信息。
    【解决方案2】:

    这是一种方法:

    Sub adam()
        Dim s As String, result As Variant
        s = "happy"
        result = Application.Match(s, Range("A:A"), 0)
        MsgBox CLng(Split(CStr(result), " ")(1))
    End Sub
    

    编辑#1:

    根据 Ron 的评论,改用这个:

    Sub adam()
        Dim s As String, result As Variant
        s = "happy"
        result = Application.Match(s, Range("A:A"), 0)
        If InStr(1, CStr(result), " ") = 0 Then
            MsgBox "Match worked; result is:  " & result
        Else
            MsgBox "Match failed; error is:  " & CLng(Split(CStr(result), " ")(1))
        End If
    End Sub
    

    【讨论】:

    • 虽然不太可能发生,但该代码不会区分 string Error 2042error 2042
    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多