Excel Select案例中的类型不匹配与子类型错误的变体

Excel Select案例中的类型不匹配与子类型错误的变体,excel,vba,Excel,Vba,下面代码中指示的范围包含VLOOKUP公式。该代码用于在VLOOKUP返回N/a时通知用户 但是,我在下面的Case CVErrxlErrNA行中得到了一个类型不匹配错误。为什么?我怎样才能解决这个问题 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]

下面代码中指示的范围包含VLOOKUP公式。该代码用于在VLOOKUP返回N/a时通知用户

但是,我在下面的Case CVErrxlErrNA行中得到了一个类型不匹配错误。为什么?我怎样才能解决这个问题

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

显然,CVErr输出的子类型Error的变体不喜欢与任何其他类型进行比较。发生这种情况时,将抛出类型不匹配。只要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

这应该做什么?可以为CVErr和xlErrNA变量提供代码?给定的范围具有Vlookup公式,该公式从另一张表中得出结果,我希望用户添加产品,如果Vlookup给定N/A错误为什么使用[方括号]?@DavidZemens,感谢您提供信息。我再次在这里学到了一些新东西,因此: