我想做一个测试,其中声明了Error
类型的变量,稍后在VBA程序中使用。我在活动工作表的单元格=1/0
中写了(5,6)
,因此它的值为#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
,但是,在x
:Run-time error "91": Object variable or With block variable not set
的作业行中出现了错误。
有人可以告诉我这里有什么问题,或者给我另一个例子,其中声明变量或类型Error
&使用
答案 0 :(得分: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
答案 1 :(得分: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作为函数来检索错误消息。