【发布时间】:2017-04-18 20:20:47
【问题描述】:
我已简化示例以使其简短,并将以下值放在 A1 到 A4 的范围内。
A1 = 0A2 = empty 'blank cell A3 = match(0;0;0) 'to produce #N/A A4 = 4,95
我想捕捉在A3 中触发的错误号,即已经存储在数组中的内容,
我只想打印正值。
- test1 => 产生运行时错误 13,即使我检查了
IsError。 - test2 => 跳过非常棘手的错误。
-
test3 => 在我看来这是最好的解决方案,但我不知道如何获取错误号。
Sub test1() Dim i As Long Dim arr() As Variant arr = ActiveSheet.Range("A1:A4").Value For i = 1 To 4 If Not IsError(arr(i, 1)) And Not IsEmpty(arr(i, 1)) And arr(i, 1) <> "0" Then MsgBox arr(i, 1) End If Next i End SubSub test2() Dim i As Long Dim arr() As Variant arr = ActiveSheet.Range("A1:A4").Value On Error Resume Next For i = 1 To 4 If Not IsEmpty(arr(i, 1)) And arr(i, 1) <> "0" Then MsgBox arr(i, 1) End If Next i End SubSub test3() Dim i As Long Dim arr() As Variant arr = ActiveSheet.Range("A1:A4").Value For i = 1 To 4 If IsError(arr(i, 1)) = True Then MsgBox "error at position " & i ElseIf Not IsEmpty(arr(i, 1)) And arr(i, 1) <> "0" Then MsgBox arr(i, 1) End If Next i End Sub
【问题讨论】:
-
错误号是什么意思?您的代码在位置 3 检测到错误。
-
在本地窗口中我看到错误 2042 但我无法检查 if 语句。
-
附注,
If IsError(arr(i, 1)) = True,为什么是= True? -
在文本 3 中,
MsgBox CStr(arr(i, 1))--> 错误 2042
标签: vba excel error-handling excel-2010