以下代码中指示的范围包含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
答案 0 :(得分:2)
显然,子类型错误的变体(由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