在具有子类型错误变量的选择案例中键入不匹配

时间:2014-08-07 13:40:47

标签: excel vba

以下代码中指示的范围包含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

1 个答案:

答案 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