【问题标题】:Store #VALUE! #NUM! #REF! in variable存储#VALUE! #NUM! #参考!在变量中
【发布时间】:2011-02-16 00:35:46
【问题描述】:

所以我正在尝试做一个简单的版本。 假设我知道单元格(1,1)中有错误,而且我知道它是#num!,#ref!或#value!,我希望能够将相应的错误消息存储在一个变量中,这样我就可以将它打印到不同的工作表上。 这是我尝试过的,但显然失败了。

Sub FindAndPrintErrors
dim Store as string
    If IsError(Range("A1"))) = True Then
        Store = Range("A1").value 'it breaks here'
    end if 
    range("B1") = Store
end sub

我知道我可以做到这一点,但我想知道是否有更好的方法。

Sub FindAndPrintErrors2
    dim Store
        If IsError(Range("A1"))) = True Then
            temp = Range("A1").value 'it breaks here'
        if temp = "error 2029" then
            store = "#num!"
        ' and so on'
        end if 
        range("B1") = Store
    end sub

【问题讨论】:

  • 你也可能不需要宏来做你想做的事,因为像 =IF(ISERROR(Q42),Q42,"not an error") 这样的公式应该可以正常工作......

标签: vba error-handling excel


【解决方案1】:

尝试使用 .Text 而不是 .value。这可以存储在您的变量中。

?cells(1,2).text
#N/A
?cells(1,2).value
Error 2042
?cells(2,2).text
#REF!
?cells(2,2).value
Error 2023

【讨论】:

    【解决方案2】:

    只需将变量设为 Variant 类型即可。然后,您可以将任何内容放入单元格中,包括错误值。

    稍微详细一点,您的代码可能如下所示:

    Public Sub copyFromCellIfError()
        Dim v
        v = [q42]
    
        If IsError(v) Then
            [z99] = v
        End If
    End Sub
    

    假设您想要复制实际的错误值,而不是它的字符串表示形式。

    【讨论】:

    • @Ommit 另外,你可以使用:If CStr(temp) = "Error 2007" or : If CInt(temp) = 2007
    猜你喜欢
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2015-02-17
    相关资源
    最近更新 更多