Select Case与子typesvariables的types不匹配

下面代码中指出的范围包含一个VLOOKUP公式。 该代码旨在通知用户VLOOKUP是否VLOOKUP #N/A

但是,在下面的Case CVErr(xlErrNA)一行中,我得到一个types不匹配错误。 为什么? 我怎样才能解决这个问题?

 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 

显然,子types错误的变体(和CVErr输出CVErr )不喜欢与任何其他types进行比较。 发生这种情况时,会引发types不匹配。 只要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