下面代码中显示的范围包含一个VLOOKUP
公式。如果VLOOKUP
返回一个#N/A
,代码将通知用户。
但是,我在下面的Case CVErr(xlErrNA)
行上得到一个类型不匹配错误。为什么?我该如何解决这个问题?
Private Sub Worksheet_Calculate()
Dim c As Range
For Each c In Range("N7:N13,N30:N36,N53:N59,N85:N91,N108:N114,N137:N137")
Select Case [c]
Case CVErr(xlErrNA)
MsgBox "hello"
End Select
Next c
End Sub
显然,子类型Error的变体(如CVErr
的输出)不喜欢与任何其他类型进行比较。当发生这种情况时,将抛出类型不匹配。只要c
不包含错误代码,您就会得到此错误。
因此,您必须将Select Case
语句分成两部分:一部分处理错误代码,另一部分处理其他所有内容。
Dim c As Range
For Each c In Range("N7:N13,N30:N36,N53:N59,N85:N91,N108:N114,N137:N137")
If IsError(c.Value) Then
'Deal with error codes
Select Case c.Value
Case CVErr(xlErrNA)
MsgBox "#N/A"
Case CVErr(xlErrDiv0)
MsgBox "Divide by zero."
'etc.
End Select
Else
'Deal with everything else
Select Case c.Value
Case 1
MsgBox "1"
Case "a"
MsgBox "a"
'etc.
End Select
End If
Next c