1

我想做一个Error声明类型变量的测试,稍后在 VBA 程序中使用。我已经写=1/0(5,6)活动工作表的单元格中,因此它具有 value #DIV/0!,然后我尝试运行以下代码:

Sub try()
   Dim x As Error
   y = ActiveSheet.Cells(5, 6).Value
   MsgBox TypeName(y)
   x = ActiveSheet.Cells(5, 6).Value
End Sub

MsgBox确实打印Error了,但是,在分配给:y的行中引发了错误。xRun-time error "91": Object variable or With block variable not set

谁能告诉我这里出了什么问题,或者给我另一个Error声明和使用变量或类型的例子?

4

2 回答 2

3

单元格中的错误是错误值,而不是错误对象

使用错误对象:

   Dim x As Error
   Dim n As Long
   ActiveCell.Formula = "=1/0"
   For n = xlEvaluateToError To xlInconsistentListFormula
      Set x = ActiveCell.Errors(n)
      If x.Value Then MsgBox "Error in cell"
   Next n
于 2013-09-02T12:53:36.347 回答
0

要从单元格中检索错误消息:

Sub try()
    Dim x As String
    Dim y As Variant
    y = ActiveSheet.Cells(5, 6).Value
    MsgBox TypeName(y)
    If TypeName(y) = "Error" Then
        x = ActiveSheet.Cells(5, 6).Text
        MsgBox x
    End If
End Sub

如果您只有错误号,您将使用 Error 作为函数来检索错误消息。

于 2013-09-02T12:56:00.947 回答