只需要这行代码如下所示:
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))))))
答案 0 :(得分:2)
有两个可能的原因(我知道)为什么会出现Type mismatch
错误。
L
或i
不是自然数字。修复:确保参数是自然数。 (例如,如果L
是范围,请使用L.Row
)单元格包含错误。修复(如果您无法删除错误):
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没有延迟评估,因此有必要将测试分开。
您无法找到错误的原因可能是您正在查看错误的单元格。在你的问题中,你写了&#34;栏目L&#34;但您引用的单元格位于行L 和列i 。