运行时错误13 - 与true比较

时间:2016-06-27 06:44:57

标签: vba

只需要这行代码如下所示:

If Cells(L, i).Value = True

然后我收到以下错误消息:

Run Time Error 13. Type mismatch. 

有人能告诉我为什么会收到此错误消息吗?

此列L具有空单元格或某些公式,如:

=IF(OR($O11="";$CJ11=0;AH$6<$CJ11);"";IF($CJ11=AH$6;TRUE;IF($O11="S";TRUE;IF(OR(AND(RIGHT($O11;1)="M";$O11<>"M");RIGHT($O11;1)="S");IF(MOD(AH$6-$CJ11;LEFT($O11;LEN($O11)-1)*IF(RIGHT($O11;1)="M";4;1))=0;TRUE;FALSE);IF($O11="M";IF(MOD(AH$6-$CJ11;4)=0;TRUE;FALSE);IF(RIGHT($O11;1)<>"A";MOD(AH$6-$CJ11;$O11)=0;FALSE))))))

1 个答案:

答案 0 :(得分:2)

有两个可能的原因(我知道)为什么会出现Type mismatch错误。

  1. Li不是自然数字。修复:确保参数是自然数。 (例如,如果L是范围,请使用L.Row
  2. 单元格包含错误。修复(如果您无法删除错误):

    If Not IsError(Cells(L, i).Value) Then
        If Cells(L, i).Value = True Then 'you could also omit the "= True"
            'do stuff
        End If
    End If
    

    由于VBA没有延迟评估,因此有必要将测试分开。

  3. 您无法找到错误的原因可能是您正在查看错误的单元格。在你的问题中,你写了&#34;栏目L&#34;但您引用的单元格位于行L 列i